【问题标题】:"TypeError: Cannot read property 'length' of undefined" Converting Google Sheet data into a Google Doc template using Google Apps Script“TypeError:无法读取未定义的属性‘长度’”使用 Google Apps 脚本将 Google 表格数据转换为 Google Doc 模板
【发布时间】:2021-01-18 19:18:20
【问题描述】:

包含文件的 Google 表格文件夹:https://drive.google.com/drive/folders/1hPKQk7eRjSdlMDjiZI2BZrHIRhzVtYG5?usp=sharing

我正在尝试使用我的测试合并谷歌工作表文件中的数据填写谷歌文档中的模板,特别是在名为“PrintThis”的选项卡中。我在我的“测试合并”谷歌工作表文件中添加了一个 Google Apps 脚本,但我收到此错误:“TypeError:无法读取未定义的属性‘长度’”。 PrintThis 中的数据行数会有所不同,所以我猜测错误是由这一行引起的?

    var tactics = Sheets.Spreadsheets.Values.get('1xSWskGS8B_3Y35I4ycAjFZQiGbfJo13O3837RKnxnpk', 'A4:J');    

但是当我做 A4:J6 只是为了测试它的这个静态数据集时,它仍然给我同样的错误。我该如何解决这个问题,即使 PrintThis 选项卡具有动态行数并且我的 PrintThis 选项卡可以移动(例如,新的工作表/选项卡可以放置在 PrintThis 选项卡的左侧或右侧)?

【问题讨论】:

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


    【解决方案1】:

    如果您想使用 Sheets API 获取“Test Merge”的值,请确保将工作表名称与范围一起添加。示例:“测试合并!A4:J”

    示例:

    代码:

    function myFunction() {
    
      Logger.log(Sheets.Spreadsheets.Values.get('somespreadsheetid', 'Test Merge!A4:J').values);
    }
    

    输出:

    或者

    由于您使用的是 Google Apps 脚本,因此您可以使用 SpreadsheetApp。

    代码:

    function myFunction() {
      var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test Merge");
      var range = sh.getRange(4, 1, sh.getLastRow() - 4 + 1, 10);
      var val = range.getValues();
      Logger.log(val)
    }
    

    输出:

    参考资料:

    SpreadsheetApp

    Method: spreadsheets.values.get

    【讨论】:

    • 非常感谢您的回复!我按照您的建议添加了工作表名称,但是当我运行它时它给了我一个不同的错误代码:“TypeError:无法读取未定义的属性'0'(第 25 行,文件“代码”)”这是否意味着代码正在读取我的工作表的第一列不正确?
    • 为了帮助我们更好地了解您的错误是什么,请在上面的帖子中包含更多代码。此外,粘贴代码后,请删除代码中的所有机密数据。
    • 我认为你提到的修复解决了这个问题,我认为我有一个完全不同的问题,所以我会为它创建一个新问题。再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多