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

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

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

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


person Karen Fisher    schedule 22.03.2015    source источник
comment
Это можно сделать с помощью DriveApp: см. мой ответ здесь   -  person    schedule 16.06.2016
comment
С августа 2017 года это доступно через объект "лист": sheet.getFormURL ()   -  person beano    schedule 07.03.2018


Ответы (2)


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

person Kalyan Reddy    schedule 24.03.2015
comment
Спасибо! Жалко это слышать. - person Karen Fisher; 24.03.2015

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

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

Документы

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

person grreeenn    schedule 08.11.2020