尝试写入使用" openById"打开的Google表格。

时间:2017-08-23 01:47:40

标签: google-sheets

项目描述:从带有多个标签的名册电子表格开始(每个标签一个),每个标签包含行的成员列表。列是排练或计划日期。第二张包含扫描的出勤记录。打开考勤记录表并阅读每条记录。一列包含名单上的工作表名称。切换到该工作表并搜索已扫描的成员。将与日期匹配的列标记为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');
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

如果您按ID访问电子表格,那么最好提一下表单名称,否则默认情况下它会占用第一张表。

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

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

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