首页 > 解决方案 > “TypeError:无法读取未定义的属性‘长度’”使用 Google Apps 脚本将 Google 表格数据转换为 Google Doc 模板

问题描述

包含文件的 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 选项卡的左侧或右侧)?

标签: javascriptgoogle-apps-scriptgoogle-sheetsgoogle-sheets-apigoogle-docs-api

解决方案


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

例子:

测试数据

代码:

function myFunction() {

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

输出:

测试数据1

或者

由于您使用的是 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)
}

输出:

在此处输入图像描述

参考:

电子表格应用程序

方法:电子表格.values.get


推荐阅读