OnChangeTrigger 没有 运行 并且在 GAS 触发器面板中有错误消息
OnChangeTrigger does not run and have an error message in the GAS trigger panel
我不明白为什么我的触发器 运行 不正确。
我编写此脚本是为了自动记录在此传播中执行的所有更改sheet。这些日志将写入“D4:H”范围内的 sheet“管理 Sheet”。必须在此范围内填写的字段将是:[1--> 用户电子邮件,2--> new Date(),"--> changeType,4--> sheetName,5-->修改范围)]
function setUpTrigger(){
ScriptApp.newTrigger('loggerModifFunction')
.forSpreadsheet('ss Id')
.onChange()
.create();
}
function loggerModifFunction(e) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Management Sheet').getRange(e.range.getLastRow(), 5).setValue([user,new Date(),changeType,sheetName,range]);
}
Google 脚本 window 显示以下错误:
"TypeError: Cannot read property 'lastRow'of undefined".
试试这个
function loggerModifFunction(e) {
Browser.msgBox(JSON.stringify(e))
}
这将向您显示可用的信息!
{"authMode":"FULL","changeType":"EDIT","source":{},"triggerUid":"123456789012345","user":{"email":"XXX@gmail.com","nickname":"XXXX"}}
在任何情况下,您都无法获取 e.range
user
或 changeType
您可以获取例如 e.user.email
或 e.changeType
代码#1
function setUpTrigger() {
ScriptApp.newTrigger('loggerModifFunction')
.forSpreadsheet('ssID1')
.onChange()
.create();
}
function loggerModifFunction(e) {
var ss = SpreadsheetApp.openById('ssID2')
var sh = ss.getSheetByName('Management Sheet')
sh.appendRow([e.user.nickname, new Date(), e.changeType, e.source.getActiveSheet().getName(), e.source.getActiveRange().getA1Notation()])
}
哪里
- ssID1 : 我要调查的电子表格的 ID
- ssID2 : 我要收集并写入更改的电子表格的ID(代码内置在这个电子表格中)
代码#2
如果你想要一个特定的位置并排除一些工作表
function loggerModifFunction(e) {
var ss = SpreadsheetApp.openById('1HlRT30uvpPD7GNrv2aRZydO1a3zc0kQOulGBd_0mc3k')
var sh = ss.getSheetByName('Management Sheet')
var sheetName = e.source.getActiveSheet().getName()
var excl = ['Sheet1','Sheet2'];//excluded sheets
if (excl.indexOf(sheetName) == -1){
sh.getRange(sh.getLastRow()+1,4,1,5).setValues([[e.user.nickname, new Date(), e.changeType, sheetName, e.source.getActiveRange().getA1Notation()]])}
}
注意事项
如果您不在同一个组织中,由于权限策略,您将无法恢复用户(除了您自己)
范围不在事件对象中
获取事件对象的代码:
function onMyChange(e) {
JSON.stringify(e));
}
事件对象:
"authMode":"","changeType":"","source":{},"triggerUid":"","user":{"email":"","nickname":""}}
我不明白为什么我的触发器 运行 不正确。
我编写此脚本是为了自动记录在此传播中执行的所有更改sheet。这些日志将写入“D4:H”范围内的 sheet“管理 Sheet”。必须在此范围内填写的字段将是:[1--> 用户电子邮件,2--> new Date(),"--> changeType,4--> sheetName,5-->修改范围)]
function setUpTrigger(){
ScriptApp.newTrigger('loggerModifFunction')
.forSpreadsheet('ss Id')
.onChange()
.create();
}
function loggerModifFunction(e) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Management Sheet').getRange(e.range.getLastRow(), 5).setValue([user,new Date(),changeType,sheetName,range]);
}
Google 脚本 window 显示以下错误:
"TypeError: Cannot read property 'lastRow'of undefined".
试试这个
function loggerModifFunction(e) {
Browser.msgBox(JSON.stringify(e))
}
这将向您显示可用的信息!
{"authMode":"FULL","changeType":"EDIT","source":{},"triggerUid":"123456789012345","user":{"email":"XXX@gmail.com","nickname":"XXXX"}}
在任何情况下,您都无法获取 e.range
user
或 changeType
您可以获取例如 e.user.email
或 e.changeType
代码#1
function setUpTrigger() {
ScriptApp.newTrigger('loggerModifFunction')
.forSpreadsheet('ssID1')
.onChange()
.create();
}
function loggerModifFunction(e) {
var ss = SpreadsheetApp.openById('ssID2')
var sh = ss.getSheetByName('Management Sheet')
sh.appendRow([e.user.nickname, new Date(), e.changeType, e.source.getActiveSheet().getName(), e.source.getActiveRange().getA1Notation()])
}
哪里
- ssID1 : 我要调查的电子表格的 ID
- ssID2 : 我要收集并写入更改的电子表格的ID(代码内置在这个电子表格中)
代码#2
如果你想要一个特定的位置并排除一些工作表
function loggerModifFunction(e) {
var ss = SpreadsheetApp.openById('1HlRT30uvpPD7GNrv2aRZydO1a3zc0kQOulGBd_0mc3k')
var sh = ss.getSheetByName('Management Sheet')
var sheetName = e.source.getActiveSheet().getName()
var excl = ['Sheet1','Sheet2'];//excluded sheets
if (excl.indexOf(sheetName) == -1){
sh.getRange(sh.getLastRow()+1,4,1,5).setValues([[e.user.nickname, new Date(), e.changeType, sheetName, e.source.getActiveRange().getA1Notation()]])}
}
注意事项
如果您不在同一个组织中,由于权限策略,您将无法恢复用户(除了您自己)
范围不在事件对象中
获取事件对象的代码:
function onMyChange(e) {
JSON.stringify(e));
}
事件对象:
"authMode":"","changeType":"","source":{},"triggerUid":"","user":{"email":"","nickname":""}}