【问题标题】:Google apps script not identifying sheet correctly谷歌应用程序脚本无法正确识别工作表
【发布时间】:2014-06-08 11:05:46
【问题描述】:

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

当我使用电子表格 https://docs.google.com/spreadsheet/ccc?key=0AtDy2rbIwVyldE82MG50SkR3UWYyam5YRVd1ajZlcnc&usp=drive_web#gid=0 运行脚本时,一切正常。

当我使用电子表格 https://docs.google.com/spreadsheets/d/1A0Kd_BKeO9IB-SJvRMhC68q0XMQLrXarVVPlFJa_fMg/edit#gid=0 运行脚本时,我收到一条消息,我需要先选择一个活动电子表格。

这是脚本:

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>

看来问题出在第二个电子表格上。

我们将不胜感激。

【问题讨论】:

    标签: google-apps-script google-sheets-api


    【解决方案1】:

    使用 .getActiveSheet() 脚本将是: 函数 doGet() { 返回 HtmlService .createTemplateFromFile('index') 。评价(); }

    函数 getData() { var mysheet = SpreadsheetApp.openById('SPREADSHEET_KEY').getActiveSheet().getDataRange().getValues(); 返回我的表格; }

    【讨论】:

      【解决方案2】:

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

      function getData() {
        var spreadsheet = SpreadsheetApp.openById('SPREADSHEET_KEY').getDataRange().getValues();
        var mysheet = spreadsheet.getSheetByName('NameOfTheSheet');
        return mysheet;
      }
      

      【讨论】:

      • 似乎当电子表格只包含一个工作表时,如果您只想阅读其内容,则不需要显式引用该工作表。尽管如此,该脚本在第一个电子表格中运行良好,但在第二个电子表格中出现错误。
      • 脚本运行的用户是否在浏览器中打开了第一个电子表格,但没有打开第二个电子表格?我见过类似的行为,因为有一个活动会话,所以脚本可以工作。
      • 无论如何,我会检查 SpreadsheetApp.openById() 返回的内容。 'SPREADSHEET_KEY' 是如何设置的?
      • 两张纸都打开了,但只有第一张正确运行。我尝试调试,但收到一般错误消息“服务器忙,稍后再试”。 'SPREADSHEET_KEY' 是手动设置的值:0AtDy2rbIwVyldE82MG50SkR3UWYyam5YRVd1ajZlcnc 和 1A0Kd_BKeO9IB-SJvRMhC68q0XMQLrXarVVPlFJa_fMg
      • 另一个区别是 2 个电子表格的 url 类型。第一个 url(完美运行的那个)具有以下结构:SOME_GOOGLE_PATH/ccc?key=SOME_KEY&usp=drive_web#gid=0。第二个 url(给出错误的那个)具有不同的结构:SOME_GOOGLE_PATH/SOME_KEY/edit#gid=0。我不知道指向 google 电子表格的 url 可以使用什么样的结构。为什么 2 个 url 有不同的结构?这是错误的原因吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多