【问题标题】:How to extract the pubhtml ID in google sheet using Apps Script?如何使用 Apps 脚本在 google sheet 中提取 pubhtml ID?
【发布时间】:2019-10-31 12:39:51
【问题描述】:

我正在尝试使用 Apps 脚本获取我的 google 表格的网页链接。当您转到文件>发布到网络>发布时,您将在那里看到一个网络链接。我想通过应用程序脚本获取该链接。请帮忙。

【问题讨论】:

  • @Tanaike 你是对的。谢谢你。

标签: google-apps-script


【解决方案1】:
  • 您想使用 Google Apps 脚本检索像 https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml 这样的 URL。

如果我的理解是正确的,那么这个答案呢?

问题和解决方法:

File>Publish to the web>publish 可以为 Google Docs 运行。之前可以使用 Drive API v2 的publishedLink 检索此 URL。但不幸的是,在当前阶段,这不能同时用于 Drive API v2 和 v3。因此,作为一种解决方法,我想建议使用文件 ID。

顺便说一下,https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml2PACX-### 不是文件 ID。也请注意这一点。

示例脚本:

在这种情况下,作为测试用例,检索已发布的电子表格的 URL。

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var url = ss.getUrl().replace("edit", "pubhtml"); // or replace("edit", "pub");
  Logger.log(url)
}

注意:

  • 在上述脚本中,当电子表格未发布到网络时,当您访问 URL 时,电子表格不会显示。请注意这一点。
  • 例如,如果要检索 Google Document 的 URL,可以使用以下脚本。不幸的是,在 Google 文档中,getUrl() 返回https://docs.google.com/open?id=###。所以上面的脚本不能用。

    function myFunction() {
      var doc = DocumentApp.getActiveDocument();
      var url = "https://docs.google.com/document/d/" + doc.getId() + "/pub";
      Logger.log(url)
    }
    

参考资料:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

补充:

如果you can enable Drive API at Advanced Google Services,也可以使用下面的脚本。

模式一:

当你使用谷歌文档的容器绑定脚本时,可以使用这个。

var url = Drive.Files.get((DocumentApp.getActiveDocument() || SpreadsheetApp.getActiveSpreadsheet() || SlidesApp.getActivePresentation()).getId()).alternateLink.replace(/\/edit.+/, "/pub");
Logger.log(url);

模式2:

当你有 Google Docs 的文件 ID 时,你可以使用它。

var url = Drive.Files.get(fileId).alternateLink.replace(/\/edit.+/, "/pub");
Logger.log(url);

【讨论】:

  • 谢谢。它现在正在工作@Tanaike。但是,我的谷歌驱动器中有 800 多张谷歌表格。如何将所有这些模板发布到网络并获取网络链接 ID?
  • @architect_mosby017 感谢您的回复。我很高兴你的问题得到了解决。我愿意支持你。但是您的评论问题是新问题。那么您可以通过包含详细信息将其作为新问题发布吗?因为当您的初始问题被评论更改时,看到您的问题的其他用户会感到困惑。通过将其发布为新问题,包括我在内的用户可以想到您的新问题。当时,please close this question。如果您能合作解决您的新问题,我很高兴。
  • 当然@tanaike。我明白。非常感谢你的帮助。我将发布另一个关于我的新问题的问题。感谢您的帮助
  • @architect_mosby017 感谢您的回复和回复。我会检查它。顺便说一句,我知道你的这个问题已经解决了。但是,如果我对您这个问题的回答没有解决您的问题,请告诉我。我必须修改它。这个怎么样?
  • 对此表示歉意。 =) 现在一切都好。再次感谢你的帮助。我已经发布了一篇关于我的其他问题的新帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 2023-01-07
相关资源
最近更新 更多