【发布时间】:2021-11-12 21:54:07
【问题描述】:
我有一个包含 URL 的源工作表。这些 URL 指向其他电子表格中的特定目标工作表(选项卡)。 (如果我手动单击链接,它们会打开正确的选项卡/工作表。)
网址如下所示:
https://docs.google.com/spreadsheets/d/<spreadsheetID>/edit?resourcekey=<ignored>#gid=<sheetid>。 (“gid=NNN”部分标识要激活的电子表格中的工作表(选项卡)。)
我可以使用const sprd = SpreadsheetApp.openByUrl(url) 以编程方式打开目标电子表格。但是要获得特定的工作表(选项卡),我能找到的唯一有用的 API 是getActiveSheet(),但这被记录为返回工作表“显示在 UI 中”。但是这个电子表格没有显示在 UI 中。而 AFAICT,对于编程访问,“活动”工作表始终只是电子表格中的第一个工作表,与传递给 openByUrl() 的 URL 中的“gid”无关。
作为一种解决方法,我可以从 URL 中解析出“#gid=NNNN”。然后 openByUrl() 电子表格,调用 getSheets() 并将从 URL 中提取的 gid 与每个工作表的 .getSheetId() 进行比较,直到找到为止。 AFAICT,电子表格上没有像 getSheetByID() API 这样的东西。
我还缺少其他方法吗?
【问题讨论】:
-
为什么不
getSheetByName()? -
据我所知,我没有任何工作表名称。访问选项卡时,URL 会从浏览器中复制出来,因此它们采用表格定义的格式。我无法控制 URL 中的内容。 (除非 GID 也是“名称”,否则可能会简化解决方法。)
-
如果您没有工作表名称,那么正如您所说,循环并获取 ids
标签: google-apps-script google-sheets-api