我在Google表格中遇到问题TypeError:无法从undefined中读取属性“source”。 (第7行,文件“代码”)运行以下代码时请帮助
function onEdit(event)
{
var timezone = "GMT-5";
var timestamp_format = "MM-dd-yyyy-hh-mm-ss";
var updateColName = "Ticket#";
var timeStampColName = "TimeComplete";
var sheet = event.source.getSheetByName('InAndOut');
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.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) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!
var cell = sheet.getRange(index, dateCol + 1);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
cell.setValue(date);
}
}
source
是event
的财产,没有被指定一个对象,所以它被称为未分配。当像您这样的函数直接从脚本编辑器运行时会发生这种情况。
要从脚本编辑器运行它,首先必须为函数参数分配一个带有相应属性的事件对象。有关详细信息,请参阅How can I test a trigger function in GAS?
如果您将从脚本编辑器运行它,建议:
event.source
取代SpreadsheetApp.getActiveSpreadsheet()
onEdit
是简单触发器的保留函数名称。此触发器的事件是用户对工作表的操作。
onEdit(e)在用户更改电子表格中的值see reference时运行。
如果从编辑器运行该函数,则函数中的事件对象是未定义的:
function onEdit(event) // undefined
如果用户更改单元格值,则触发器自动启动并为event
变量赋值。