#google-apps-script #google-sheets #triggers #google-forms
#google-apps-script #google-sheets #триггеры #google-формы
Вопрос:
Я использую форму Google для запуска этого скрипта.
Когда я запускаю скрипт с помощью кнопки воспроизведения, он работает идеально.
Когда я запускаю триггер onsubmit, флажок заполняется нормально, но дата setValue — нет.
Я также пробовал использовать setFormula
, но получаю тот же результат.
function AddCheckBox_toSchoolLunchForm(F) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1")
var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
var range = sheet.getRange(sheet.getLastRow(), 8);
range.clearContent();
range.setDataValidation(rule);
var FormulaCell = sheet.getRange(sheet.getLastRow(), 10);
FormulaCell.setFormula("=DATEVALUE(A" (sheet.getLastRow()) ")");
}
Конечная цель состоит в том, чтобы столбец J заполнялся датой в формате shot из столбца A каждый раз при отправке формы.
Мне нужен этот формат для запуска countIfs на другом листе.
Другим вариантом было бы каким-то образом встроить тег format в эту команду CountIfs, чтобы они совпадали.
=COUNTIFS('Form Responses 1'!J:J,A2,'Form Responses 1'!D:D,B2)
Ответ №1:
ОБНОВЛЕННЫЙ ОТВЕТ
Если у вас возникли проблемы с запуском функции на триггере, в то время как она работает по назначению без триггера, проверьте следующее:
-
Для тяжелых файлов / данных формы это может привести к задержке заполнения листа новыми данными формы.
-
Чтобы избежать конфликтов, дайте электронной таблице некоторое время для заполнения новой строки перед извлечением
sheet.getLastRow()
или доступом к данным на листе. -
Вы можете легко расставить точки, например, с помощью Utilities.sleep().
-
-
Убедитесь, что ваш триггер установлен правильно. Для этого проверьте, что
- тип триггера правильный
- триггер привязан к правильной функции
- избегайте конфликтов, создавая новый триггер при переименовании функции.
-
Убедитесь, что проблема не связана с ограничениями запуска
-
Это распространенный источник ошибок при использовании простых триггеров.
-
Проверьте, что учетная запись, под авторизацией которой выполняется триггер, имеет разрешения на редактирование листа / диапазона. Это важно для проверки, когда владельцем триггера является другой человек, а не человек, который запускает скрипт вручную.
-
Обратите внимание, что для
setFormula()
нет необходимости включать=
в формулу -
Обратите внимание, что
DATEVALUE()
возвращает ожидаемый результат только тогда, когда ячейка правильно отформатирована как дата
Комментарии:
1. Я попытался добавить режим ожидания в двух местах, и это не увенчалось успехом. В настоящее время я единственный, кто использует это в ситуации тестирования.
2. Не могли бы вы поделиться своей электронной таблицей для устранения неполадок? И, возможно, также форма, если нет конфиденциальной информации.
3. Электронная таблица: docs.google.com/spreadsheets/d /…
4. Форма: docs.google.com/forms/d/e /…
5. Спасибо, что предложили помощь