当前时间脚本在 Google 文档中不起作用



Google Doc 应该更新当前时间,当编辑在其前面的 2 列中进行时。

因此,如果编辑了列 B 或 C,则列 D 将更新为当前时间。

function updateDate() {
var s = SpreadsheetApp.getActive().getSheetByName("Daily");
var active_sheet = 
SpreadsheetApp.getActive().getActiveSheet().getName();
var active_col = s.getActiveCell().getColumn();
var active_row = s.getActiveCell().getRow();
var target_rows = [1, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16, 17, 18, 19, 
20];
var target_cols = [2, 3]
var row_in_range = target_rows.indexOf(active_row) == -1 ? false : 
true; Logger.log(row_in_range);
var col_in_range = target_cols.indexOf(active_col) == -1 ? false : 
true; Logger.log(col_in_range);
if (row_in_range && col_in_range) {
s.getRange(active_row, 4).setValue(new Date);
s.getRange(active_row, 5).setValue(new Date);
}
}

没有从堆栈驱动程序日志中收到错误,但它不起作用。

目标:

编辑列 B 或 C 时在相应行中写入时间戳的函数。


溶液:

这才是你真正需要的。这是一个小脚本,每当编辑工作表时,它都会使用简单的onEdit触发器自动运行。它所做的只是检查使用事件对象编辑的列,然后在 D 列中写入时间戳。

注意:您将无法手动运行此代码,它会在编辑工作表时自动运行。

function onEdit(e) {
var sh = e.source.getActiveSheet();
var col = e.range.getColumn();
if ((col === 2 || col === 3) === true) {
var row = e.range.getRow();
sh.getRange(row, 4).setValue(new Date());
}
}

引用:

  • 简单触发器
  • 事件对象
  • setValue()

最新更新