google 电子表格 return url 中的 getFormUrl() 只有最后一个链接的表单?

getFormUrl() in google spreadsheet return url only of last linked form?

我有两个表格与一个跨页链接sheet,每个表格一个sheet。 当我运行这样的脚本

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

我只会看到一个 url(如生活所示 url 第二种形式)。有什么方法可以获取所有链接表单的 urls 吗?

API 目前缺少此功能。此 here 的问题跟踪器上存在现有请求。为该问题加注星号以关注它以获得解决方案。

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

一般来说,Form 连接到 Sheet,而不是连接到 Spreadsheet 本身。因此,获取所有 Spreadsheet 表单的一种方法是遍历 SpreadsheetsSheet,并获取它们的表单 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 中的所有 Form,遍历它们以获得它们的目的地并将其与您的 Spreadsheet 进行比较ID,如 this answer