以下是我试图运行的Google表格中的脚本...
你能就这个错误提出一些建议吗?
function myFunction() {
//IF target range D23 is edited...
//
if (range.getRow()!=23 || range.getColumn()!=4) return;
//Set B23 to current date and time
//
range.offset(0,-2,1,1).setValue(new Date());
//Clear range B37:T37
//
range.offset(14,-2,1,19).clearContent();//<<<not really necessary
//Copy range B23:T36
//Paste to range B24:T37
//
range.offset(0,-2,14,19).copyTo(range.offset(1,0));
//Clear range B23:T23
range.offset(0,0,1,19).clearContent();
}
答案 0 :(得分:1)
在这一行
if (range.getRow()!=23 || range.getColumn()!=4) return;
您尝试从范围变量中获取行和列,但尚未定义。
这就是为什么它会抛出这个错误。
在尝试使用之前,您必须先定义range
。
如果您根据某个触发器运行此功能,那么您可以从事件对象中获取范围
function functionName(eventObject) {
var range = eventObject.range;
//Your other code follows below
}
否则,您也可以使用:getRange()
参考文献:
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column
https://developers.google.com/apps-script/guides/triggers/events
答案 1 :(得分:0)
也许你的功能应该是这样的:
function myFunction(e) {
if (e.range.getRow()!=23 || e.range.getColumn()!=4) return;
e.range.offset(0,-2,1,1).setValue(new Date());
e.range.offset(14,-2,1,19).clearContent();
e.range.offset(0,-2,14,19).copyTo(e.range.offset(1,0));
e.range.offset(0,0,1,19).clearContent();
}