Google Sheet: 如何在 onChange 事件触发时获取实际变化?
Google Sheet: How to get the actual change when onChange event fires?
doc 不是很有帮助。与 onEdit
不同,onChange
事件没有包含所做更改的属性。我如何获得它?
function onChange(e){
console.log(e);
}
此事件对象中没有有用的信息。
我不能使用 onEdit 的原因是我正在使用一些外部脚本来 POST 这个 sheet 而它不会触发 on edit
事件。
假设您有此源代码:
const showEvent = e => {
Logger.log(JSON.stringify(e, null, 2));
}
const setTrigger = () => {
const sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger('showEvent')
.forSpreadsheet(sheet)
.onChange()
.create();
}
您使用 setTrigger()
设置了触发器,每次调度 change
事件时,showEvent()
将打印出如下内容:
{
"authMode": "FULL",
"changeType": "REMOVE_ROW",
"source": {},
"triggerUid": "8302470070286889650",
"user": {
"email": "user@gmail.com",
"nickname": "user"
}
}
诀窍是确保在触发函数中指定 event
参数,在我的例子中是 e
,如 showEvent(e)
使用改变事件对象的source
属性。
此 属性 returns 活动电子表格,然后您可以使用 getActiveSheet()
、getActiveRange()
等
function repondToChange(e){
if(e.changeType === 'EDIT'){
const spreadsheet = e.source;
const range = spreadsheet.getActiveRange();
console.log(range.getA1Notation());
}
}
相关
doc 不是很有帮助。与 onEdit
不同,onChange
事件没有包含所做更改的属性。我如何获得它?
function onChange(e){
console.log(e);
}
此事件对象中没有有用的信息。
我不能使用 onEdit 的原因是我正在使用一些外部脚本来 POST 这个 sheet 而它不会触发 on edit
事件。
假设您有此源代码:
const showEvent = e => {
Logger.log(JSON.stringify(e, null, 2));
}
const setTrigger = () => {
const sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger('showEvent')
.forSpreadsheet(sheet)
.onChange()
.create();
}
您使用 setTrigger()
设置了触发器,每次调度 change
事件时,showEvent()
将打印出如下内容:
{
"authMode": "FULL",
"changeType": "REMOVE_ROW",
"source": {},
"triggerUid": "8302470070286889650",
"user": {
"email": "user@gmail.com",
"nickname": "user"
}
}
诀窍是确保在触发函数中指定 event
参数,在我的例子中是 e
,如 showEvent(e)
使用改变事件对象的source
属性。
此 属性 returns 活动电子表格,然后您可以使用 getActiveSheet()
、getActiveRange()
等
function repondToChange(e){
if(e.changeType === 'EDIT'){
const spreadsheet = e.source;
const range = spreadsheet.getActiveRange();
console.log(range.getA1Notation());
}
}
相关