当我尝试运行此脚本时,我不断收到此错误。用于将我的Google表格数据转换为JSON API。
TypeError:无法调用null的方法“ getRange”。 (第20行,文件“代码”)
function doGet(e) {
var sheetName = "Sheet name";
var sheetId = "1234...";
var book = SpreadsheetApp.openById(sheetId);
var sheet = book.getSheetByName(sheetName);
var json = convertSheet2JsonText(sheet);
return ContentService
.createTextOutput(JSON.stringify(json))
.setMimeType(ContentService.MimeType.JSON);
}
function convertSheet2JsonText(sheet) {
// first line(title)
var colStartIndex = 1;
var rowNum = 1;
var firstRange = sheet.getRange(2, 2, 2, sheet.getLastColumn());
var firstRowValues = firstRange.getValues();
var titleColumns = firstRowValues[0];
// after the second line(data)
var lastRow = sheet.getLastRow();
var rowValues = [];
for(var rowIndex=2; rowIndex<=lastRow; rowIndex++) {
var colStartIndex = 1;
var rowNum = 1;
var range = sheet.getRange(rowIndex, colStartIndex, rowNum,
sheet.getLastColumn());
var values = range.getValues();
rowValues.push(values[0]);
}
// create json
var jsonArray = [];
for(var i=0; i<rowValues.length; i++) {
var line = rowValues[i];
var json = new Object();
for(var j=0; j<titleColumns.length; j++) {
json[titleColumns[j]] = line[j];
}
jsonArray.push(json);
}
return jsonArray;
}
您能看到导致此错误的任何信息吗?
答案 0 :(得分:2)
您的工作表名称和/或您在代码中使用的工作表ID不正确。
错误消息=“ TypeError:无法调用null的方法” getRange“。(第20行,文件“ Code”)”
第20行:var firstRange = sheet.getRange(2,2,2, sheet.getLastColumn());
getRange由“工作表”调用;这意味着“工作表”为空。
您需要使用脚本调试功能(运行>调试功能)来分析代码。在 doGet 上运行调试-调试将自动包含 convertSheet2JsonText ,由 doGet 调用。
我在一个名为“ s1x”的工作表中创建了一些虚拟数据,但是,我故意为它分配了'sheetName'=“ s1”。现在,当我运行Debug时,会收到相同的错误消息。
第20行是函数 convertSheet2JsonText 的一部分,但该函数中没有此缺陷。错误出现在 doGet 中。
下面是显示错误的调试屏幕。注意“ sheet”的值= null。
下面是调试屏幕,显示 doGet 的值。请注意,“工作表”的值已经为空。但还要注意sheetName =“ s1”的值。唯一的问题是工作表的实际值为“ s1x”。这就解释了为什么“工作表”为空。