【问题标题】:getFormUrl() in google spreadsheet return url only of last linked form?谷歌电子表格中的getFormUrl()仅返回最后一个链接表单的url?
【发布时间】:2015-03-22 13:34:35
【问题描述】:

我有两个表格链接到一个电子表格,每个表格一个表格。 当我运行这样的脚本时

function myFunction() {
  var ss;
  ss = SpreadsheetApp.getActive();
  Logger.log(ss.getFormUrl());
}

我只会看到一个网址(因为生活显示了第二种形式的网址)。有没有办法获取所有链接表单的 url?

【问题讨论】:

  • 有一种使用 DriveApp 的方法:参见my answer here
  • 自 2017 年 8 月起,可通过 'sheet' 对象获得:sheet.getFormURL()

标签: google-apps-script google-sheets google-forms


【解决方案1】:

API 中目前缺少此功能。这个here 的问题跟踪器上有一个现有请求。为该问题加注星标以解决问题。

【讨论】:

  • 谢谢!听了真可惜。
【解决方案2】:

我知道这是一个老问题,但我仍然会添加一个可能引起关注的答案。

一般来说,Form 连接到 Sheet,而不是连接到 Spreadsheet 本身。因此,获取所有Spreadsheet 表单的一种方法是通过SpreadsheetsSheets,并获取它们的表单URL,如下所示:

function getFormsOfSpreadsheet(spreadsheetId) {
  const ss = SpreadsheetApp.openById(spreadsheetId);
  const sheets = ss.getSheets();
  const formsUrls = [];

  for (const sheet of sheets) {
    const formUrl = sheet.getFormUrl();
    // getFormUrl() returns null if no form connected
    if (formUrl) {
      formsUrls.push(formUrl);
    }
  }
  
  return formsUrls;
}

Docs

另一种可能的方法是获取驱动器或Folder 中的所有Forms,遍历它们以获取它们的目的地并将其与您的Spreadsheet ID 进行比较,例如this answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2020-04-28
    • 1970-01-01
    相关资源
    最近更新 更多