Google 脚本记录器未显示 sheet 对事件数据进行的编辑

Google Script logger not showing what sheet edit was made on from event data

我正在尝试检测 sheet 在已安装的 onEdit 功能中进行了哪些编辑。

记录器正确地记录了正在编辑的单元格的数据,但是没有告诉我 sheet 这个编辑是在什么地方进行的。我需要特别指出 sheet 编辑发生在什么地方以完成我正在构建的功能。

记录器:

[19-08-01 08:37:27:714 CDT] {"authMode":{},"range":{"columnStart":4,"rowStart":4,"rowEnd":4,"columnEnd":4},"source":{},"oldValue":"2.0","triggerUid":"1111111","user":{"nickname":"Mike-SMT","email":"Mike-SMT@random.com"},"value":"222"}

用于记录事件的代码:

function raw_data_edited(e) {
  Logger.log(JSON.stringify(e));
}

我在上面的日志中没有看到任何指示特定 sheet。

有没有办法从事件中获取 ID sheet?

e.range 将为您提供已编辑的范围。

从那里您可以使用此范围所属的 getSheet()get the sheet

然后从sheet,用getSheetId()get the ID的sheet

function raw_data_edited(e) {
  Logger.log(JSON.stringify(e));
  var ssID = e.range.getSheet().getSheetId().toString();
  Logger.log(ssID);
}

奇怪,source记录事件对象的时候好像总是显示为空,但还是可以用的

我不确定你是指 spreadsheet ID 还是 sheet ID,所以这里是如何使用事件对象获取两者:

//get spreadsheet id using "source" object
e.source.getId();

//get spreadsheet id using "range" object
e.range.getSheet().getParent().getId();

//get individual sheet id using "source" object
e.source.getActiveSheet().getSheetId();

//get individual sheet id using "range" object
e.range.getSheet().getSheetId();

参考文献: