получите форму, прикрепленную к расширенной таблице

#google-apps-script #google-apps

#google-приложения-скрипт #google-приложения

Вопрос:

Я работаю с «новой» версией Google SS.

Я хотел бы получить форму, прикрепленную к электронной таблице, в которой я нахожусь, вот так:

 function findFormURL() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  return ss.getFormUrl();
}
 

Однако в новой версии эта функция пока не работает.

В любом случае, он выдает URL-адрес формы, что интересно, но я хотел бы иметь идентификатор формы или объект, чтобы затем я мог работать с ним, изменять некоторые вещи и т. Д. Возможно ли это ?

Ответ №1:

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

Я согласен, что это далеко от идеала и требует наличия формы с тем же уникальным именем, что и у вашей электронной таблицы, но это лучше, чем ничего.

 function getFormTest() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var nameToSearch = ss.getName();
  Logger.log('title contains "' nameToSearch '"');
  var forms = DriveApp.searchFiles('title contains "' nameToSearch '"');
  while (forms.hasNext()){
    var formDoc = forms.next();
    Logger.log(formDoc.getMimeType());
    if(formDoc.getMimeType()=='application/vnd.google-apps.form'){ 
      break;
    }
  }
  Logger.log('formDoc = ' formDoc);
  var form = FormApp.openById(formDoc.getId());
  var items = form.getItems();
  for(var i in items){
    Logger.log(items[i].getTitle() '  ' items[i].getType());
  }
}
 

Комментарии:

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