基于Google文档ID获取表格最后修改人及App Script报错求助
问题解决:Google Apps Script列数不匹配报错
报错原因
你修改后的脚本中,当H列单元格没有链接时,返回的是[null](仅1列数据),但其他有链接或无效链接的情况返回的是[日期, 用户名]或[null, null](2列数据),导致生成的values数组里子数组长度不一致,最终和输出范围的列数不匹配,触发报错。
修正后的脚本
function myFunction() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); const range = sheet.getRange("h2:h" + sheet.getLastRow()); const values = range.getRichTextValues() .map(([a]) => { const link = a.getLinkUrl(); // 无链接时返回2个null,保证所有子数组统一为2列 if (!link) return [null, null]; const id = link.split("/")[5]; if (id) { const { lastModifyingUser: { displayName, emailAddress }, modifiedDate } = Drive.Files.get(id, { fields: "lastModifyingUser(displayName,emailAddress),modifiedDate" }); // 按需选择返回用户名或邮箱,当前返回用户名,换邮箱就改成emailAddress return [new Date(modifiedDate), displayName]; } return [null, null]; }); range.offset(0, 1, values.length, 2).setValues(values); }
必要操作说明
因为用到了Drive.Files.get接口,需要在脚本编辑器中启用Drive API:
- 打开脚本编辑器后,点击左侧菜单栏的服务(⚙️图标)
- 找到Drive API,点击添加完成启用
内容的提问来源于stack exchange,提问作者Alianna
相关产品推荐
相关产品推荐

