gpt4 book ai didi

javascript - 谷歌脚本 : trying to copy row to another sheet cannot convert error

转载 作者:行者123 更新时间:2023-11-30 09:35:13 24 4
gpt4 key购买 nike

我正在开发一个功能

  1. 逐行浏览 Google 工作表中的指定列(H 列在脚本中表示为值 [7])。
  2. 根据值 [7] 列中具有特定值("is")的单元格,它将选择整行。
  3. 然后它将选定的行(完整地)复制到同一文档中的单独工作表中。

这是我目前所得到的:

function moveRowsBasedOnCellValue(){

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var master = ss.getSheetByName('Main');
var values = master.getDataRange().getValues(); //selects all values in a sheet

values.forEach(function(value){
//if cell in the column H equals YES execute the script
if (value[7] == "YES"){
//variable to select all columns in the source sheet that aren't blank
var colWidth = master.getMaxColumns();
//variable containing the target sheet
var destinationYeses = ss.getSheetByName("Yeses");
//select first empty row in the destination sheet
var destinationYesesRange = destinationYeses.getRange(destinationYeses.getLastRow()+1,1);
//copy the relevant row into the sheet
master.getRange(value,1, 1, colWidth).copyTo(destinationYesesRange);
}});
}

脚本执行正常,直到脚本的最后一行:

master.getRange(value,1, 1, colWidth).copyTo(destinationYesesRange);  

错误状态:

Cannot convert [here the Logger error provides a list of all values in a row separated by a comma] to (class).

关于我可能做错了什么的想法?

最佳答案

您收到该错误的原因是在以下代码中

 master.getRange(value,1, 1, colWidth).copyTo(destinationYesesRange);

getRange 期望传递给它的所有值都是整数。而值变量是一个数组。因此,要修复它,您必须进行以下两项更改

第一个:Documentation

values.forEach(function(value,index){  // gives the array index to index variable

第二

//Index for array(values) starts at 0, whereas for the rows number in sheet starts at 1. 
//so add 1 to convert the index to row number
master.getRange(index + 1,1, 1, colWidth).copyTo(destinationYesesRange);

因此您的最终代码将如下所示:

function moveRowsBasedOnCellValue(){

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var master = ss.getSheetByName('Main');
var values = master.getDataRange().getValues(); //selects all values in a sheet

values.forEach(function(value,index){
//if cell in the column H equals YES execute the script
if (value[7] == "YES"){
//variable to select all columns in the source sheet that aren't blank
var colWidth = master.getMaxColumns();
//variable containing the target sheet
var destinationYeses = ss.getSheetByName("Yeses");
//select first empty row in the destination sheet
var destinationYesesRange = destinationYeses.getRange(destinationYeses.getLastRow()+1,1);
//copy the relevant row into the sheet

master.getRange(index +1 ,1, 1, colWidth).copyTo(destinationYesesRange);
}});
}

最后说明:这是一种非常低效的数据传输方式,如果您要复制大量数据并且脚本执行时间超过 5-6 分钟,则执行将终止。查看此帖子 addresses this issue

关于javascript - 谷歌脚本 : trying to copy row to another sheet cannot convert error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com