В Google Таблицах вы можете добавить некоторые функции создания сценариев. Я добавляю что-то для onEdit
мероприятия, но не могу сказать, работает ли это. Насколько я могу судить, вы не можете отлаживать живое событие из Google Sheets, поэтому вам придется делать это из отладчика, что бессмысленно, поскольку аргумент события, переданный моей onEdit()
функции, всегда будет неопределенным, если я запустил его из Script Editor
,
Итак, я пытался использовать этот Logger.log
метод для регистрации некоторых данных при каждом onEdit
вызове функции, но это тоже похоже на то, что он работает только при запуске из Script Editor
. Когда я запускаю его из Script Editor
, я могу просмотреть журналы, перейдя вView->Logs...
Я надеялся, что смогу увидеть журналы с момента фактического выполнения события, но я не мог этого понять.
Как мне отладить этот материал?
источник
Logger.log('firstLog');MailApp.sendEmail({to:'yourEmailAddressHere@someone.com',subject: "subject here ^_^",body: Logger.getLog()});
Ответы:
ОБНОВИТЬ:
Как написано в этом ответе,
Stackdriver Logging сейчас является предпочтительным методом ведения журнала.
Используйте
console.log()
для входа в Stackdriver.Logger.log
либо отправит вам электронное письмо (в конечном итоге) об ошибках, которые произошли в ваших скриптах, либо, если вы запускаете что-то изScript Editor
, вы можете просмотреть журнал из последней функции запуска, перейдя вView->Logs
(все еще в редакторе скриптов). Опять же, это покажет вам только то, что было зарегистрировано последней функцией, которую вы запускали изнутриScript Editor
.Сценарий, который я пытался заставить работать, был связан с электронными таблицами - я сделал что-то вроде списка дел, в котором элементы сортируются по приоритетам и так далее.
Единственными триггерами, которые я установил для этого сценария, были триггеры onOpen и onEdit. Отладка триггера onEdit была труднее всего, потому что я все думал, что если я установлю точку останова в своей функции onEdit, открою электронную таблицу, отредактирую ячейку, моя точка останова сработает. Это не вариант.
Чтобы смоделировать редактирование ячейки, мне все же пришлось что-то делать в реальной электронной таблице. Все , что я сделал , было убедитесь , что клетка, я хотел его рассматривать в качестве «отредактированы» был выбран, то в
Script Editor
, я пошел быRun->onEdit
. Тогда будет достигнута моя точка останова.Однако мне пришлось прекратить использовать аргумент события, который передается в функцию onEdit - вы не можете смоделировать это, сделав это
Run->onEdit
. Любую информацию, которая мне была нужна из электронной таблицы, например, какая ячейка была выбрана, и т.д., мне приходилось выяснять вручную.В любом случае, длинный ответ, но в конце концов я понял это.
ИЗМЕНИТЬ :
Если вы хотите увидеть список дел, который я составил, вы можете проверить его здесь
(да, я знаю, что кто угодно может его редактировать - в этом смысл делиться!)
Я надеялся, что это также позволит вам увидеть сценарий. Так как вы его не видите, вот оно:
источник
Верно - так что определите аргумент события самостоятельно для отладки. См. Как я могу проверить функцию триггера в GAS?
Опять же, правда, но помощь есть. Библиотека BetterLog Питера Германа перенаправит все журналы в электронную таблицу, что позволит вести журнал даже из кода, который не прикреплен к экземпляру редактора / отладчика.
Если вы кодируете сценарий, содержащий электронную таблицу, например, вы можете добавить только эту одну строку в начало файла сценария, и все журналы перейдут на лист «Журналы» в электронной таблице. Никакого другого кода не требуется, просто используйте,
Logger.log()
как обычно:источник
console.log()
должен быть лучшим ответом сейчасОбновление 2017 г .: Stackdriver Logging теперь доступно для скрипта Google Apps. В строке меню редактора сценария выберите: перейти
View > Stackdriver Logging
к просмотру или потоковой передаче журналов.console.log () будет писать
DEBUG
сообщения уровняПример
onEdit()
регистрации:Затем проверьте журналы в Stackdriver UI маркированы ,
onEdit() Event Object
чтобы увидеть результатисточник
Logger.log
. Чем это отличается от того,console.log
что вы используете? Я новичок в инструментах, поэтому просто пытаюсь понять, что все такое.Немного хакерский, но я создал массив под названием «console», и всякий раз, когда мне нужно было вывести на консоль, я вставлял его в массив. Затем всякий раз, когда я хотел увидеть фактический результат, я просто возвращал
console
вместо того, что возвращал раньше.источник
console.log('smth')
работает отлично, а в ГАЗе?I just returned console
как его выводить?Если у вас открыт редактор сценариев, вы увидите журналы в разделе «Просмотр»> «Журналы». Если в вашем сценарии есть триггер onedit, внесите изменения в электронную таблицу, которые должны запускать функцию с помощью редактора сценария, открытого на второй вкладке. Затем перейдите на вкладку редактора скриптов и откройте журнал. Вы увидите, что ваша функция передает регистратору.
Обычно, пока открыт редактор скриптов, событие будет записываться в журнал и показывать его вам. Он не будет показывать, есть ли кто-то еще в файле где-либо еще.
источник
Я просмотрел эти сообщения и каким-то образом нашел простой ответ, который я публикую здесь для тех, кому нужны короткие и приятные решения:
console.log("Hello World")
в своем сценарии.источник
У меня такая же проблема, я где-то нашел в Интернете следующее ....
Однако обработчики событий в Документах немного сложны. Поскольку документы могут обрабатывать несколько одновременных изменений, вносимых несколькими пользователями, обработчики событий обрабатываются на стороне сервера. Основная проблема с этой структурой заключается в том, что при сбое сценария триггера события происходит сбой на сервере. Если вы хотите увидеть информацию об отладке, вам необходимо настроить явный триггер в меню триггеров, который отправляет вам информацию об отладке по электронной почте, когда событие не удается, иначе оно не будет работать тихо.
источник
Это далеко не элегантно, но во время отладки я часто регистрируюсь в Logger, а затем использую getLog () для получения его содержимого. Тогда я либо:
По сути, это просто проблема вывода JavaScript .
Ему явно не хватает функциональности современных
console.log()
реализаций, но Logger по-прежнему помогает отлаживать скрипты Google.источник
Просто в качестве примечания. Я сделал тестовую функцию для своей таблицы. Я использую переменную google throws в функции onEdit (e) (я назвал ее e). Затем я сделал такую тестовую функцию:
Вызов этой тестовой функции запускает весь код, как если бы у вас было событие в электронной таблице. Я просто добавил возможность ячейки, которую я редактировал, что дало мне неожиданный результат, установив значение как значение, которое я ввел в ячейку. OBS! для дополнительных переменных, которые Google предоставляет функции, перейдите сюда: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
источник
В настоящее время вы ограничены природой, связанной с контейнером, при использовании скриптов в документах. Если вы создадите новый скрипт вне документации, вы сможете экспортировать информацию в электронную таблицу Google и использовать ее как инструмент для ведения журнала.
Например, в вашем первом блоке кода
Когда я работаю с GAS, у меня есть два монитора (вы можете использовать два окна), один из которых содержит среду GAS, а другой - SS, поэтому я могу записывать информацию и регистрировать.
источник
Консоль разработчика будет регистрировать ошибки, вызванные сценарием приложения, поэтому вы можете просто выдать ошибку, чтобы она регистрировалась как обычный console.log. Он остановит выполнение, но может быть полезен для пошаговой отладки.
будет отображаться в консоли аналогично
console.log('hello world')
источник
просто отлаживайте код своей электронной таблицы следующим образом:
показывает так:
источник
onEdit
)