TypeError:无法调用null的方法“getRange”

时间:2017-05-04 01:18:01

标签: google-apps-script

当查看错误日志时,它看起来像是一条线被调用两次而且我很困惑:

// set globals
var ss = SpreadsheetApp.getActiveSpreadsheet();

flushSheet("Daily Overall Summary", "A1");

function flushSheet(sheetname, range) {
  var sheet = ss.getSheetByName(sheetname); Logger.log("sheet is " + sheet);
  var the_cell = sheet.getRange(range);
  var cell_content = the_cell.getValues()[0][0];
  the_cell.clearContent();
  the_cell.setValue(cell_content);

  SpreadsheetApp.flush();
}

当我跑步时,我得到:

  

TypeError:无法调用null的方法“getRange”。 (第8行,档案   “forceFlush”)驳回

以下是生成的日志:

[17-05-04 09:12:31:301 HKT] sheet is Sheet
[17-05-04 09:12:31:706 HKT] sheet is null

我不确定为什么Logger.log()被调用两次,但我认为这是对我的问题的暗示。

GAS告诉我变量表是null,但是第一次在工作表上调用getRange()时它就不是空的,正如你在第一个日志条目中看到的那样。

为什么var sheet等于null而不是Sheet,为什么看起来两次调用的东西?我该怎么办?我想得到并设置A1的值与A1中的值相同,因为我想做this

1 个答案:

答案 0 :(得分:1)

在这种情况下,当在脚本编辑器上运行flushSheet()时,首先运行flushSheet("Daily Overall Summary", "A1");。然后,flushSheet(sheetname, range)运行。因为下一个sheetnamerange没有值,所以它变为sheet is null。并且发生错误。

作为测试,下列样品怎么样?请运行main()

示例脚本:

// set globals
var ss = SpreadsheetApp.getActiveSpreadsheet();

// Run main() using Script Editor
function main(){
  flushSheet("Daily Overall Summary", "A1");
}

function flushSheet(sheetname, range) {
  var sheet = ss.getSheetByName(sheetname); Logger.log("sheet is " + sheet);
  var the_cell = sheet.getRange(range);
  var cell_content = the_cell.getValues()[0][0];
  the_cell.clearContent();
  the_cell.setValue(cell_content);

  SpreadsheetApp.flush();
}

如果我误解了你的问题,我很抱歉。