尝试写入 Google 表格时打开了"openById"



项目描述:从包含多个选项卡(每个组一个(的名单电子表格开始,每个选项卡都有一个行的成员列表。列是排练或节目日期。 第二张纸包含扫描的出勤记录。打开出勤记录表并阅读每条记录。一列包含名册表上工作表的选项卡名称。切换到该工作表并搜索扫描的成员。 用 X 标记与日期匹配的列以表示出席情况。 用 X 标记扫描的出勤记录以表示已处理。

一切都在工作,将 X 的最终写入保存到由 ID 打开的工作表中。我无法弄清楚更新相应行/列单元格的语法。

我将不胜感激。 谢谢!

function processAttendanceRecords(){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var ss = SpreadsheetApp.openById("1234567");
var data = ss.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var rhrsDate = Utilities.formatDate(data[i][3], "PST", "M/d");
sheet.setActiveSheet(sheet.getSheetByName(data[i][1]));
var members = sheet.getDataRange().getValues();
var col = members[0].indexOf(rhrsDate);
for (var j = 1; j < members.length; j++) {
if (data[i][6] == members[j][0] && data[i][7] == members[j][1]) {
SpreadsheetApp.getActiveSheet().getRange(j+1,col+1).setValue('X');
SpreadsheetApp.getActiveSheet(ss).getRange(i+1,9).setValue('X');
}
}
}
}

如果您通过ID访问电子表格,那么最好提及工作表名称,否则默认情况下它将采用第一张工作表。

var ss = SpreadsheetApp.openById("123456").getSheetByName("Sheet1");

由于您尚未定义工作表名称,因此无法使用getRange(Row,Column(。因此,您需要像上面一样提及工作表名称,然后更改最后一行。

ss.getRange(i+1,9).setValue('X');

最新更新