Электронная таблица Google: перенести весь текст в один файл

#google-apps-script #google-sheets

#google-apps-script #google-таблицы

Вопрос:

У меня есть электронная таблица Google с таблицей, вызываемой Wrapped Sheet для ответов, собранных из формы Google. При каждом новом добавленном ответе (таким образом, функция onEdit) я хочу вызывать Wrap Text опцию для всех ячеек. Я открыл редактор сценариев и создал onEdit.gs следующий код:

 function onEdit(){
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
  if(activeSheet.getName() == "Wrapped Sheet") {
    var dataRange = activeSheet.getRange(1,1,data.length,headers.length);
    dataRange.setWrap(true);
  }
}
  

Однако функция не запускается при новом ответе. Кроме того, вызов его вручную из редактора сценариев не сообщает о какой-либо ошибке.

Ответ №1:

Если бы каждый ответ S.O. был ссылкой на read docs, S.O. был бы бессмысленным.

Итак, как упоминал орширо… И, как упоминалось в этом ответе S.O…. https://webapps.stackexchange.com/questions/88543/how-to-automatically-wrap-text-to-new-responses-from-a-form-in-a-google-spreadsh

Фактический ответ:

 function wrap(e) {
  e.range.setWrap(true);
}
  

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

1. Спасибо! Кроме того, здорово читать не очень упрямый (или более спокойный) ответ вместо того, который пытается заставить вас делать дополнительные вещи плюс ответ.

Ответ №2:

Вы должны пойти и прочитать документы о событиях Google Script полностью.

Вы обнаружите, что для вашего варианта использования существует конкретное событие: при отправке формы. Вместо выполнения вашего кода при изменении листа (функция onEdit (e)) вы должны выполнить код при отправке формы.

В тех же документах вы можете найти пример того, как использовать этот триггер.

ПРИМЕЧАНИЕ: Имейте в виду, что существует 2 типа триггеров событий: простые и установленные. Событие onFormSubit реагирует на установленный триггер (опять же, вы найдете все в документах).

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

1. Кроме того, вы проверяете имя электронной таблицы, а не имя листа, поэтому оно не работает.

2. Спасибо, что указали мне правильные источники. Фактическое решение оказалось очень простым и требует только onFormSubmit функции: function onFormSubmit(e) { e.range.setWrap(true); }