Google apps script TypeError:无法调用方法";getRange";空值。(第20行,文件“代码”)
当我尝试运行此脚本时,不断出现此错误。它用于将我的google sheets数据转换为JSON API TypeError:无法调用null的方法“getRange”。(第20行,文件“代码”)Google apps script TypeError:无法调用方法";getRange";空值。(第20行,文件“代码”),google-apps-script,google-sheets,Google Apps Script,Google Sheets,当我尝试运行此脚本时,不断出现此错误。它用于将我的google sheets数据转换为JSON API TypeError:无法调用null的方法“getRange”。(第20行,文件“代码”) 函数doGet(e){ var sheetName=“图纸名称”; var sheetId=“1234…”; var book=SpreadsheetApp.openById(sheetId); var sheet=book.getSheetByName(sheetName); var json=con
函数doGet(e){
var sheetName=“图纸名称”;
var sheetId=“1234…”;
var book=SpreadsheetApp.openById(sheetId);
var sheet=book.getSheetByName(sheetName);
var json=convertSheet2JsonText(sheet);
返回内容服务
.createTextOutput(JSON.stringify(JSON))
.setMimeType(ContentService.MimeType.JSON);
}
函数convertSheet2JsonText(表){
//第一行(标题)
var colStartIndex=1;
var-rowNum=1;
var firstRange=sheet.getRange(2,2,2,sheet.getLastColumn());
var firstRowValues=firstRange.getValues();
变量titleColumns=firstRowValues[0];
//第二行之后(数据)
var lastRow=sheet.getLastRow();
var rowValues=[];
对于(var rowIndex=2;rowIndex,代码中使用的工作表和/或工作表ID的名称不正确
错误消息=“TypeError:无法调用null的方法“getRange”。(第20行,文件“Code”)
第20行:var firstRange=sheet.getRange(2,2,2,
sheet.getLastColumn())
getRange由“sheet”调用;这意味着“sheet”为空
您需要使用脚本调试函数(运行>调试函数)来分析代码。在doGet上运行调试-调试将自动包括doGet调用的convertSheet2JsonText
我在一个名为“s1x”的工作表中创建了一些虚拟数据,但是,我故意指定了一个“sheetName”=“s1”。现在,当我运行调试时,我得到了相同的错误消息
第20行是函数convertSheet2JsonText的一部分,但该函数中没有缺陷;错误在doGet中
下面是显示错误的调试屏幕。请注意“sheet”=null的值。
下面是显示doGet值的调试屏幕。请注意“sheet”的值已经为null。但也请注意sheetName=“s1”的值。唯一的问题是工作表的实际值为“s1x”。这解释了“sheet”为null的原因
当我更正sheetName的值时,函数将干净地运行,没有错误。
代码中使用的工作表和/或工作表ID的名称不正确
错误消息=“TypeError:无法调用null的方法“getRange”。(第20行,文件“Code”)
第20行:var firstRange=sheet.getRange(2,2,2,
sheet.getLastColumn())
getRange由“sheet”调用;这意味着“sheet”为空
您需要使用脚本调试函数(运行>调试函数)来分析代码。在doGet上运行调试-调试将自动包括doGet调用的convertSheet2JsonText
我在一个名为“s1x”的工作表中创建了一些虚拟数据,但是,我故意指定了一个“sheetName”=“s1”。现在,当我运行调试时,我得到了相同的错误消息
第20行是函数convertSheet2JsonText的一部分,但该函数中没有缺陷;错误在doGet中
下面是显示错误的调试屏幕。请注意“sheet”=null的值。
下面是显示doGet值的调试屏幕。请注意“sheet”的值已经为null。但也请注意sheetName=“s1”的值。唯一的问题是工作表的实际值为“s1x”。这解释了“sheet”为null的原因
当我更正sheetName的值时,函数将干净地运行,没有错误。
您使用的工作簿中不存在具有指定名称的工作表。我使用工作表的名称。我在此处使用了演示名称(工作表名称)。当您说“运行此脚本”时,是指从脚本编辑器运行,还是运行Web应用程序?从脚本编辑器运行。我使用工作表的名称。我只是使用了演示名称(工作表名称)此处。
无论如何,您在实际脚本中输入的工作表名称是错误的。请尝试将您的工作表名称更改为更简单的名称,如s1
您使用的工作簿中不存在您指定名称的工作表。我使用工作表的名称。我只是在此处使用了演示名称(工作表名称)。当您说“运行此脚本”时,您是指从脚本编辑器运行,还是运行Web应用程序?从脚本编辑器运行。我使用我的工作表名称。我只是在这里使用了一个演示名称(工作表名称)。
无论如何,您在实际脚本中输入的工作表名称是错误的。请尝试将工作表名称更改为更简单的名称,如s1
var sheetName=“BDCSylhet”;var sheetId=“1_yHKdQeaq6EJsnjnK-Os77mukmA2qOJw6qqRSKVbTD4”;这些是我的sheetName和sheetId值。正确的值。仍然面临相同的问题。问题已解决。我也需要将值添加到转换函数中。哎呀,我的错。但我很高兴您从中得到了一个结果。做得好。var sheetName=“BDCSylhet”;var sheetId=“1_YHKDQEAQEJ6EJSNJNK-Os77mukmA2qOJw6qqRSKVbTD4”;这些是我的sheetName和sheetId值。正确的值。仍然面临相同的问题。问题已解决。我也需要将值添加到转换函数中。糟糕。但我很高兴您得到了结果。做得好。
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;
}