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应用程序脚本捕获行数_Google Apps Script_Google Sheets_Google Apps - Fatal编程技术网

Google apps script Google应用程序脚本捕获行数

Google apps script Google应用程序脚本捕获行数,google-apps-script,google-sheets,google-apps,Google Apps Script,Google Sheets,Google Apps,我到处都找过了,在黑板上看到了相关的问题,但我真的被卡住了 我需要捕获一个工作表的实际行值,它在基于if语句的for循环中进行迭代 在代码的其他部分中,我必须创建表单响应表的副本并将其移动到文件夹中。我试图将正在创建的新文件的文件id记录到一个已经存在的工作表中(在该工作表中从菜单调用脚本) 我可以获取数据和值,并遍历它们,查看日志中的所有内容。根据我在其他类似问题中看到的情况,我尝试了getActiveRange().getRow()部分,但它只适用于窗体打开时光标所在的行。我需要能够根据脚本

我到处都找过了,在黑板上看到了相关的问题,但我真的被卡住了

我需要捕获一个工作表的实际行值,它在基于if语句的for循环中进行迭代

在代码的其他部分中,我必须创建表单响应表的副本并将其移动到文件夹中。我试图将正在创建的新文件的文件id记录到一个已经存在的工作表中(在该工作表中从菜单调用脚本)

我可以获取数据和值,并遍历它们,查看日志中的所有内容。根据我在其他类似问题中看到的情况,我尝试了getActiveRange().getRow()部分,但它只适用于窗体打开时光标所在的行。我需要能够根据脚本在for循环中当前查看的行动态设置ActiveRow变量

我不能将for循环变量用作当前行(j+1),因为if语句只在列中查找字符串值“notfound”-因此“j”变量值不一定与要更新的行值匹配

非常感谢您的帮助

 // Get the active spreadsheet and the active sheet
 var ssEXD = SpreadsheetApp.getActive().getSheetByName('FormData');
 var lastRowEXD = ssEXD.getLastRow();
 var lastColumnEXD = ssEXD.getLastColumn();
 var formIDValues = ssEXD.getSheetValues(2, 1, lastRowEXD-1, lastColumnEXD);

 //Loop through the returned values
 for(var j = 0; j < formIDValues.length; j++) {    

   //if NOT FOUND is true, do stuff
   if (formIDValues[j][6] == "NOT_FOUND") {

     //need this variable to be the exact row of the sheet value data
     var ActiveRow = ssEXD.getActiveRange().getRow();
     //I need to use the ActiveRow in the getActiveRange to update the sheet with some information. 
     ssEXD.getRange(ActiveRow,6,1).setValue("testing"); 

   } 

}
//获取活动电子表格和活动工作表
var ssEXD=SpreadsheetApp.getActive().getSheetByName('FormData');
var lastRowEXD=ssEXD.getLastRow();
var lastColumnEXD=ssEXD.getLastColumn();
var formIDValues=ssEXD.getSheetValues(2,1,lastRowEXD-1,lastColumnEXD);
//循环遍历返回的值
对于(var j=0;j
如果我正确阅读了您的问题,您的数据在第一行有一个列名,数据从第二行开始

所以我认为这将实现你想要的

 var ssEXD = SpreadsheetApp.getActive().getSheetByName('FormData');
 var lastRowEXD = ssEXD.getLastRow();
 var lastColumnEXD = ssEXD.getLastColumn();
 var dataR = ssEXD.getDataRange();
 var dataA = dataR.getValues();
 for(var j = 1; j < dataA.length; j++) 
 {    
   if (dataA[j][6] == "NOT_FOUND") 
   {
     dataA[j][6] = "testing";
   }
 }  
 dataR.setValues(dataA); 
var ssEXD=SpreadsheetApp.getActive().getSheetByName('FormData');
var lastRowEXD=ssEXD.getLastRow();
var lastColumnEXD=ssEXD.getLastColumn();
var dataR=ssEXD.getDataRange();
var dataA=dataR.getValues();
对于(var j=1;j
如果我正确阅读了您的问题,您的数据在第一行有一个列名,数据从第二行开始

所以我认为这将实现你想要的

 var ssEXD = SpreadsheetApp.getActive().getSheetByName('FormData');
 var lastRowEXD = ssEXD.getLastRow();
 var lastColumnEXD = ssEXD.getLastColumn();
 var dataR = ssEXD.getDataRange();
 var dataA = dataR.getValues();
 for(var j = 1; j < dataA.length; j++) 
 {    
   if (dataA[j][6] == "NOT_FOUND") 
   {
     dataA[j][6] = "testing";
   }
 }  
 dataR.setValues(dataA); 
var ssEXD=SpreadsheetApp.getActive().getSheetByName('FormData');
var lastRowEXD=ssEXD.getLastRow();
var lastColumnEXD=ssEXD.getLastColumn();
var dataR=ssEXD.getDataRange();
var dataA=dataR.getValues();
对于(var j=1;j
一旦从工作表中提取了一个数组(formidValue),该数组就不再与该工作表相关。必须将数组中正在处理的项目的索引调整为电子表格中的行号

j-数组索引-从零开始,这是该电子表格中的第二行,因此j+2

你对j变量的担心是没有根据的。无论是否通过任何测试,每次通过循环时j都会增加

一旦从工作表中提取了一个数组(formidValue),该数组就不再与该工作表相关。必须将数组中正在处理的项目的索引调整为电子表格中的行号

j-数组索引-从零开始,这是该电子表格中的第二行,因此j+2


你对j变量的担心是没有根据的。无论是否通过了任何测试,循环的每次通过都会增加j。

Hi Cooper,感谢您的响应和代码更新。对于任何看到这一点的人,只要提醒您更新数组列值,因为您从1开始,而不是从零开始。我花了一分钟。后续问题,以便我理解。setValues方法如何跟踪for或if循环外部的行?这是怎么回事??感谢您给我指出了正确的方法,特别是在if语句中重新设置变量。电子表格中的行和列从一开始。getValues()创建的数组中的行和列从零开始。因此,行=1和列=1的单元格中的数据与dataA[0][0]中的数据相同。执行setValues()操作时,请确保dataR的大小相同。数组必须是二维的。嗨,库珀,谢谢你的回复和代码更新。对于任何看到这一点的人,只要提醒您更新数组列值,因为您从1开始,而不是从零开始。我花了一分钟。后续问题,以便我理解。setValues方法如何跟踪for或if循环外部的行?这是怎么回事??感谢您给我指出了正确的方法,特别是在if语句中重新设置变量。电子表格中的行和列从一开始。getValues()创建的数组中的行和列从零开始。因此,行=1和列=1的单元格中的数据与dataA[0][0]中的数据相同。执行setValues()操作时,请确保dataR的大小相同。数组必须是二维的。