Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script TypeError:无法调用方法";getRange";空值。(第20行,文件“代码”)_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script TypeError:无法调用方法";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

当我尝试运行此脚本时,不断出现此错误。它用于将我的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=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;
}