Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 将一行从一张图纸复制到另一张图纸_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 将一行从一张图纸复制到另一张图纸

Google apps script 将一行从一张图纸复制到另一张图纸,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我知道以前有人问过这个问题,因为我花了5个小时在这里,甚至在关闭的谷歌产品论坛上都试过了。我无法阻止任何循环。条件得到满足,但循环继续运行。我一直在网上复制其他示例并插入我自己的变量,但最后,我会让5行多次转到新的工作表,直到工作表变得疲劳或其他什么 我试过getDataRange…我试过getRange…我试过循环和其他循环中的var,我都试过了,所以请看一看,让我知道这段代码是如何在新工作表中多次添加行的: function runReportAllMemCos1() { var she

我知道以前有人问过这个问题,因为我花了5个小时在这里,甚至在关闭的谷歌产品论坛上都试过了。我无法阻止任何循环。条件得到满足,但循环继续运行。我一直在网上复制其他示例并插入我自己的变量,但最后,我会让5行多次转到新的工作表,直到工作表变得疲劳或其他什么

我试过getDataRange…我试过getRange…我试过循环和其他循环中的var,我都试过了,所以请看一看,让我知道这段代码是如何在新工作表中多次添加行的:

function runReportAllMemCos1() {
  var sheet1 = sskey.getSheetByName('Businesses');
  var sheet2 = sskey.getSheetByName('tempsheet');

  var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();

  var dest = [];
  for (var i = 0; i < data.length; i++ ) {
    if (data[i][12] == "Associate") { 
      dest.push(data[i]); 
    } Logger.log(data)
    if (dest.length > 0 ) {
    sheet2.getRange(sheet2.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
    }
  }
}

谢谢你的帮助

是的,问题在于dest变量。在每次循环后都不会重置它,因此每一行都会在其中不断复合,并且每次都会重复,因此当循环通过第三行时,第1行和第2行仍然在dest变量中。Put dest=[];只要在for循环中,它就会工作

函数runReportAllMemCos1{ var sheet1=sskey.getSheetByName'business'; var sheet2=sskey.getSheetByName'tempsheet'; var data=sheet1.getRange1,1,sheet1.getLastRow,sheet1.getLastColumn.getValues; var dest=[]; 对于变量i=0;i0{ sheet2.getRangesheet2.getLastRow+1,1,目标长度,目标[0].length.SetValuesTest; } } }
是的,问题在于dest变量。在每次循环后都不会重置它,因此每一行都会在其中不断复合,并且每次都会重复,因此当循环通过第三行时,第1行和第2行仍然在dest变量中。Put dest=[];只要在for循环中,它就会工作

函数runReportAllMemCos1{ var sheet1=sskey.getSheetByName'business'; var sheet2=sskey.getSheetByName'tempsheet'; var data=sheet1.getRange1,1,sheet1.getLastRow,sheet1.getLastColumn.getValues; var dest=[]; 对于变量i=0;i0{ sheet2.getRangesheet2.getLastRow+1,1,目标长度,目标[0].length.SetValuesTest; } } }
我真的不同意user1795832的回答,因为它不使用批处理写入,而只是在每次条件为真时将数据写入表2。。。那么为什么要使用数组来实现这一点呢

试着在循环完成后批量写入工作表2,它应该按照预期工作

函数runReportAllMemCos1{ var sheet1=sskey.getSheetByName'business'; var sheet2=sskey.getSheetByName'tempsheet'; var data=sheet1.getRange1,1,sheet1.getLastRow,sheet1.getLastColumn.getValues; var dest=[]; 对于变量i=0;i0{//如果数组中写入了某些内容,则将其批量写入dest.sheet sheet2.getRangesheet2.getLastRow+1,1,目标长度,目标[0].length.SetValuesTest; } } 编辑:在您的评论之后选择您复制的列的其他可能性

函数runReportAllMemCos1{ var sheet1=sskey.getSheetByName'business'; var sheet2=sskey.getSheetByName'tempsheet'; var data=sheet1.getRange1,1,sheet1.getLastRow,sheet1.getLastColumn.getValues; var dest=[]; 对于变量i=0;i0{//如果数组中写入了某些内容,则将其批量写入dest.sheet sheet2.getRangesheet2.getLastRow+1,1,目标长度,目标[0].length.SetValuesTest; } }
我真的不同意user1795832的回答,因为它不使用批处理写入,而只是在每次条件为真时将数据写入表2。。。那么为什么要使用数组来实现这一点呢

试着在循环完成后批量写入工作表2,它应该按照预期工作

函数runReportAllMemCos1{ var sheet1=sskey.getSheetByName'business'; var sheet2=sskey.getSheetByName'tempsheet'; var data=sheet1.getRange1,1,sheet1.getLastRow,sheet1.getLastColumn.getValues; var dest=[]; 对于变量i=0;i0{//如果数组中写入了某些内容,则将其批量写入dest.sheet sheet2.getRangesheet2.getLastRow+1,1,目标长度,目标[0].length.SetValuesTest; } } 编辑:在您的评论之后选择您复制的列的其他可能性

函数runReportAllMemCos1{ var sheet1=sskey.getSheetByName'business'; var sheet2=sskey.getSheetByName'tempsheet'; var data=sheet1.getRange1,1,sheet1.getLastRow,sheet1.getLastColumn.getValues; var dest=[]; 对于变量i=0;i0{//如果数组中写入了某些内容,则将其批量写入dest.sheet sheet2.getRangesheet2.getLastRow+1,1,目标长度,目标[0].length.SetValuesTest; } }
哦,天哪,就是这样。我整天都没看足球比赛,因为我的设定值在循环中。再次感谢您的大力帮助@Serge!快速问题-使用上述内容,我可以从sheet1中选择一个特定列发送到sheet2吗?我试着在dest.pushdata[I][2]中输入列号;例如,但我一直收到一个错误。我不确定我完全理解你想要什么。。。当条件为真时,是否只复制特定列,而不在工作表2上复制其他列?是-假设我已获得sheet1范围,然后根据搜索词筛选这些行,但只希望sheet1中的一列或两列移到sheet2。问题似乎在于不同的范围大小,但我正在努力解决如何操作它们。如果您必须使用中间数组,我将更新我的答案:-哦,天哪,就是这样。我整天都没看足球比赛,因为我的设定值在循环中。再次感谢您的大力帮助@Serge!快速问题-使用上述内容,我可以从sheet1中选择一个特定列发送到sheet2吗?我试着在dest.pushdata[I][2]中输入列号;例如,但我一直收到一个错误。我不确定我完全理解你想要什么。。。当条件为真时,是否只复制特定列,而不在工作表2上复制其他列?是-假设我已获得sheet1范围,然后根据搜索词筛选这些行,但只希望sheet1中的一列或两列移到sheet2。问题似乎在于不同的范围大小,但我正在努力解决如何操作它们如果必须使用中间数组,我将更新我的答案:-谢谢-另一个答案中的解决方案也有帮助-我在循环中有设置值,这就是为什么它一遍又一遍地重写行的原因。谢谢-另一个答案中的解决方案也很有帮助-我在循环中有设置值,这就是为什么它一遍又一遍地重写行的原因。