Google apps script Google应用程序脚本未正确识别工作表

Google apps script Google应用程序脚本未正确识别工作表,google-apps-script,google-sheets-api,Google Apps Script,Google Sheets Api,我正在运行一个模板化的google脚本,它用google电子表格的内容构建一个html页面 当我用电子表格运行脚本时,一切正常 当我用电子表格运行脚本时,我得到一条消息,我需要首先选择一个活动的电子表格 以下是脚本: function doGet() { return HtmlService .createTemplateFromFile('index') .evaluate(); } function getData() { var mysheet = Spr

我正在运行一个模板化的google脚本,它用google电子表格的内容构建一个html页面

当我用电子表格运行脚本时,一切正常

当我用电子表格运行脚本时,我得到一条消息,我需要首先选择一个活动的电子表格

以下是脚本:

function doGet() {
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}

function getData() {
  var mysheet = SpreadsheetApp.openById('SPREADSHEET_KEY').getDataRange().getValues();
  return mysheet;
}
以下是index.html文件:

<? var data = getData(); ?>
<table>
  <? for (var i = 0; i < data.length; i++) { ?>
    <tr>
      <? for (var j = 0; j < data[i].length; j++) { ?>
        <td><?= data[i][j] ?></td>
      <? } ?>
    </tr>
  <? } ?>
</table>
问题似乎在于第二个电子表格


感谢您的帮助。

您当前分配给mysheet的引用是指整个文档。您仍然需要获取对包含数据的工作表的引用

function getData() {
  var spreadsheet = SpreadsheetApp.openById('SPREADSHEET_KEY').getDataRange().getValues();
  var mysheet = spreadsheet.getSheetByName('NameOfTheSheet');
  return mysheet;
}
使用.getActiveSheet 剧本是: 函数doGet{ 返回HtmlService .createTemplateFromFile'index' 估计 }

函数getData{ var mysheet=SpreadsheetApp.openById'SPREADSHEET\u KEY'.getActiveSheet.getDataRange.getValues; 返回mysheet;
}

当电子表格只包含一张单张表格时,如果您只想阅读其内容,则无需明确引用该表格。尽管如此,该脚本对于第一个电子表格工作得很好,但是对于第二个电子表格会出现错误。脚本当前运行的用户是否在浏览器中打开了第一个电子表格,而没有打开第二个电子表格?我见过类似的行为,因为存在活动会话,所以脚本可以工作。无论如何,我会检查SpreadsheetApp.openById返回的内容。“电子表格键”是如何设置的?两张表都已打开,但只有第一张运行正确。我试图调试,但收到一般错误消息服务器正忙,请稍后再试。“电子表格”键是用以下值手动设置的:0AtDy2rbIwVyldE82MG50SkR3UWYyam5YRVd1ajZlcnc和1A0Kd_BKeO9IB-SJVRMHC68Q0xMQLRXARVLFJA\u FMG其他差异是两个电子表格的url类型。第一个url——工作正常的url——的结构是:SOME\u GOOGLE\u PATH/ccc?key=SOME\u key&usp=drive\u webgid=0。给出错误的第二个url具有不同的结构:SOME_GOOGLE_PATH/SOME_KEY/editgid=0。我不知道指向谷歌电子表格的URL有什么样的结构可用。为什么这两个URL有不同的结构?这是错误的原因吗?