getFormUrl() в электронной таблице Google возвращает URL только последней связанной формы?

У меня есть две формы, связанные с одной электронной таблицей, по одному листу для каждой формы. Когда я запускаю такой скрипт

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

Я увижу только один URL (как показывает жизнь для второй формы). Есть ли способ получить URL для всех связанных форм?

1 ответ

Решение

Эта функциональность в настоящее время отсутствует в API. Существует существующий запрос на трекер проблем для этого здесь. Пометьте эту проблему, чтобы выполнить ее.

Я знаю, что это старый вопрос, но я все же добавлю ответ, кому он может быть интересен.

Вообще говоря, Form связан с Sheet, а не Spreadsheetсам. Итак, один способ получить все Spreadsheet формы должны пройти через Sheets из Spreadsheets, и получите 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;
}

Документы

Другой возможный способ - получить все Forms на Диске или в Folder, переберите их, чтобы получить пункт назначения и сравнить его с вашим SpreadsheetID, как в этом ответе

Другие вопросы по тегам