Google 应用脚本捕捉行号

Google App Script Catch Row Number

我到处看了看,也看到了这个版块的相关问题,但我真的卡住了。

我需要捕获 Sheet 的实际行值,它基于 if 语句遍历 for 循环。

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

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

我不能将 for 循环变量用作当前行 (j+1),因为 if 语句仅在列中查找字符串值 "NOT FOUND" - 所以 "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 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 ActiveRow = j + 2;

从 sheet 中提取数组 (formIDValues) 后,该数组与 sheet 不再相关。必须将数组中正在处理的项目的索引调整为 spreadsheet.

中的行号

j - 数组索引 - 从零开始,这是此传播中的第二行sheet,因此 j + 2

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