1

Тема: VBS (JS) + GoogleDocs

Добрый день.
Вопрос следующий.
Есть Форма на GoogleDocs. У формы есть Ответы. Мне бы хотелось их получить скриптом. Можно в файл. По определённым причинам, связка Форма - Таблица - Выгрузка в файл не походит, хоть и реализуется.

Среди скриптов гугля есть, например, такое:


 // Open a form by ID and log the responses to each question.
 var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
 var formResponses = form.getResponses();
 for (var i = 0; i < formResponses.length; i++) {
   var formResponse = formResponses[i];
   var itemResponses = formResponse.getItemResponses();
   for (var j = 0; j < itemResponses.length; j++) {
     var itemResponse = itemResponses[j];
     Logger.log('Response #%s to the question "%s" was "%s"',
         (i + 1).toString(),
         itemResponse.getItem().getTitle(),
         itemResponse.getResponse());
   }
 }

Судя по всему, это всё перебирает ответы и записывает их в некий Logger, текст из которого хотелось бы получить...

Ещё раз отмечу, что мне по сути нужно автоматизировано получать текст ответов, а не смотреть их (с этим проблем нет).

Вдруг кто...

"Единство,- возвестил оракул наших дней: -
Быть может спаяно железом лишь и кровью"…
Но мы попробуем спаять его любовью,-
А там увидим, что прочней…    (Ф. Тютчев)       Тут хорошая справка по vbs.

2

Re: VBS (JS) + GoogleDocs

Вы привели код Google App Script (GAS) - он работает на серверной части. WSH на клиентской.
Для решения задачи на WSH просто обращайтесь к url с результатами формы и парсите HTML-код.

3

Re: VBS (JS) + GoogleDocs

Это один из вариантов, но он не удобный, т.к. придётся делать много дополнительных действий.
Например, результаты в таблице нельзя очистить, пока существует связь с формой. Удаление связи с формой приведёт к созданию новой таблицы с ответами. Удаление ответов не удаляет записи в таблице... В общем, замкнутый круг. Ну, не то, чтобы замкнутый, но оооочень трудный.

Изначальная задача такая
Есть Андроид с интернетом.
Есть Пользователь, который должен передавать информацию.
Есть Оператор, который должен эту информацию получать и обрабатывать.
Сейчас это делает через "алё, да-да, 2583", а Оператор заносит данные.
Хочется убрать лишнее звено. Самым простым способом посчитал гуглеформы, но вот не выходит каменный цветок ((
Заказывать написание приложения - дорого, вот и маюсь, ищу варианты.

"Единство,- возвестил оракул наших дней: -
Быть может спаяно железом лишь и кровью"…
Но мы попробуем спаять его любовью,-
А там увидим, что прочней…    (Ф. Тютчев)       Тут хорошая справка по vbs.

4

Re: VBS (JS) + GoogleDocs

Да, задачка у меня специфическая, но я её всё-таки решил, через гуглеформы.
Собственно, решение и так было, но оно затормаживалось тем, что если Таблица связана с Формой, то удалить из неё результаты нельзя. Описывал выше.
Решение получилось такое.
Есть Форма. Она не связана с Таблицей, и Ответы хранятся только в ней.
На форму навешан и опубликован гуглескрипт, который сливает ответы в Таблицу. Название функции важно.

function doGet() {
   // Open a form by ID and log the responses to each question.
  var form = FormApp.openById('FormKey');
  var ss = SpreadsheetApp.openById('SpreadSheetKey').getSheetByName('SheetName');
  var formResponses = form.getResponses();
  for (var i = 0; i < formResponses.length; i++) {
   var formResponse = formResponses[i];
   var itemResponses = formResponse.getItemResponses();
   for (var j = 0; j < itemResponses.length; j++) {
     var itemResponse = itemResponses[j];
     var cell = ss.getRange(i+1, j+1);
     cell.setValue(itemResponse.getResponse());
   }
 }
 form.deleteAllResponses(); 
  
}

На Таблицу тоже навешан и опубликован гуглескрипт, который её чистит, удаляет все строки.

Механизм такой
-Пользователь при помощи Планшета заходит на Форму, заполняет и отправляет данные. Он должен сделать это до определённого времени. Это решается административно.
- В шедулере на сервере крутится некий vbs, который
1) Запускает опубликованный скрипт от Формы, который переносит Ответы
2) Читает Ответы из Таблицы
3) Чистит Таблицу (запускает опубликованный скрипт от Таблицы)

Да, много промежуточных действий, но Оператор при этом не задействован, что есть хорошо. Ну т.е. Оператор в итоге задействован, но он не получает информацию, а только проверяет, все ли её сдали.

Вдруг кому поможет.

"Единство,- возвестил оракул наших дней: -
Быть может спаяно железом лишь и кровью"…
Но мы попробуем спаять его любовью,-
А там увидим, что прочней…    (Ф. Тютчев)       Тут хорошая справка по vbs.