当查看错误日志时,它看起来像是一条线被调用两次而且我很困惑:
// 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。
答案 0 :(得分:1)
在这种情况下,当在脚本编辑器上运行flushSheet()
时,首先运行flushSheet("Daily Overall Summary", "A1");
。然后,flushSheet(sheetname, range)
运行。因为下一个sheetname
和range
没有值,所以它变为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();
}
如果我误解了你的问题,我很抱歉。