范围未定义错误

时间:2018-04-09 22:55:31

标签: google-apps-script google-sheets range defined

以下是我试图运行的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();
}

2 个答案:

答案 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();
}