尝试创建触发器以将时间戳记添加到列中(如果该行在当天的某个时间点已被编辑)。对于工作,他们觉得onEdit太乱了。我也不知道。
因此,我将触发器设置为每天下午1点运行。那部分起作用。但是,我不知道如何使时间戳记的代码指向该触发事件,并且我也不知道如何写出该特定函数。这就是我所得到的,它到达了第十行,并说源被定义为null。我在寻找它需要的triggerUiD还是其他东西?
function myFunction(event) {
var timeZone = Session.getScriptTimeZone();
var timestamp_format = "MM-dd-yyy hh:mm:ss";
var updateColName = "Updated";
var timeStampColName = "Timestamp";
var source = SpreadsheetApp.getActive().getSheetByName("TestTimestamp");
var actRng = SpreadsheetApp.getActive().getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = SpreadsheetApp.getActive().getSheetByName("TestTimestamp").getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol +1);
var date = Utilities.formateDate(new Date(), timezone, timestamp_format);
cell.setValue(date);
}
}
答案 0 :(得分:0)
第10行工作表在var headers = SpreadsheetApp.getActive().getSheetByName("TestTimestamp").getRange(1, 1, 1, sheet.getLastColumn()).getValues();
中未定义
您可以这样重写它:
function myFunction(event) {
var ss=SpreadsheetApp.getActive();
var timeZone = Session.getScriptTimeZone();
var timestamp_format = "MM-dd-yyy hh:mm:ss";
var updateColName = "Updated";
var timeStampColName = "Timestamp";
var source = ss.getSheetByName("TestTimestamp");
var actRng = ss.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var sheet=ss.getSheetByName('TestTimestamp'');
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var dateCol = headers.indexOf(timeStampColName);
var updateCol = headers.indexOf(updateColName); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol +1);
var date = Utilities.formateDate(new Date(), timezone, timestamp_format);
cell.setValue(date);
}
}