获取类型错误:GetDataRage为空?在我的谷歌网站的谷歌应用程序脚本中

时间:2017-04-26 21:45:28

标签: google-apps-script

我正在尝试编写一个允许我使用Google表单的Google应用脚本。我希望该应用程序读取工作表上的数据,然后将表格输出到我的Google网站。我还希望能够选择我想要在Google网站上显示的列。我无法使用Awesome Tables,因为我的Google云端硬盘具有敏感的客户端信息 - 因此我不想授予对Awesome Table的访问权限。 (我的目标是在不使用该应用程序的情况下创建类似“真棒表”人员目录的东西)。我在过去两天一直在研究 - 我意识到我可能要编写自己的Google应用程序脚本。问题是我还没精通JavaScript。所以,下面的代码是我提出的 - 但我收到了这个错误:

  

TypeError:无法调用null的方法“getDataRange”。 (第4行,文件“代码”,项目“员工页面的应用程序脚本”)

另外,我尝试使用调试器 - 对我而言,它看起来像是用我的数据创建一个数组,但我看不出问题。 为什么这不起作用?任何人都可以将我发送到有模板的地方,以帮助我从Google表格中读取数据并显示我的规格(某些列等)?

function doGet(){

  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {

    var JSONString = JSON.stringify(data);
    var JSONOutput = ContentService.createTextOutput(JSONString);
    JSONOutput.setMimeType(ContentService.MimeType.JSON);
    return JSONOutput
  }
}

1 个答案:

答案 0 :(得分:0)

您需要指定要访问的电子表格: 像这样:

var ss = SpreadsheetApp.openById("Your Sheet ID here")

然后您将访问电子表格中的特定工作表/标签,如下所示:

var sheet = ss.getSheetByName("Name of your Sheet");

请注意,您必须在此处替换&#34;您的工作表ID&#34;和&#34;你的表格的名称&#34;分别为您的sheet ID和工作表名称,以便使用的代码。有关上述功能的更多信息,请访问google apps script reference page

完整的代码如下:

function doGet(){
  var ss = SpreadsheetApp.openById("Your Sheet ID here")
  var sheet = ss.getSheetByName("Name of your Sheet");
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {

    var JSONString = JSON.stringify(data);
    var JSONOutput = ContentService.createTextOutput(JSONString);
    JSONOutput.setMimeType(ContentService.MimeType.JSON);
    return JSONOutput
   }
 }

希望有所帮助