Я очень новичок в программировании (прошел несколько курсов JS по Codecademy). Я пытаюсь создать простой скрипт, чтобы определить, если дана таблица с результатами игры в покер, кто кому должен платить. Я открыл скрипт Google Apps и для начала написал следующее:
function addplayerstoArray(numplayers) {
var playerArray = [];
for (i=0; i<numplayers; i++) {
playerArray.push(i);
}
}
addplayerstoArray(7);
console.log(playerArray[3])
Идея состоит в том, чтобы создать массив с общим количеством игроков в нем. При запуске кода я думал, что он выведет на консоль «3». Но ничего не произошло. Он сказал
"ReferenceError:" console "не определено."
A) Что я не понимаю в том, как консоль скриптов Google Apps работает в отношении печати, чтобы я мог видеть, выполняет ли мой код то, что мне нужно?
Б) Это проблема с кодом?
источник
Чтобы использовать взломанное решение vinnief, описанное выше, я использую MsgBox следующим образом:
Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);
и он действует как точка останова, останавливает скрипт и выводит нужную строку во всплывающее окно. Я особенно нахожу в Таблицах, где у меня проблемы с Logger.log, в большинстве случаев это обеспечивает адекватный обходной путь.
источник
Несмотря на то, что
Logger.log()
это технически правильный способ вывода чего-либо на консоль, у него есть несколько неприятностей:Logger.log(playerArray)
, а затем после отладки вы, вероятно, захотите удалитьLogger.log(playerArray)
, следовательно, еще 1-2 дополнительных шага.Вместо этого, когда я хочу что-то отладить, я добавляю точки останова (щелкаю номер строки) и нажимаю кнопку «Отладка» (значок ошибки). Точки останова работают хорошо, когда вы присваиваете что-то переменной, но не так хорошо, когда вы запускаете переменную и хотите заглянуть внутрь нее позже, что похоже на то, что пытается сделать оператор. В этом случае я бы принудительно поставил условие прерывания, введя «x» (x отмечает точку!), Чтобы выдать ошибку времени выполнения:
Сравните с просмотром журналов:
Консоль отладки содержит больше информации и ее намного легче читать, чем наложение журналов. Одним из незначительных преимуществ этого метода является то, что вам никогда не придется беспокоиться о загрязнении вашего кода кучей команд журналирования, если вам важно сохранять чистый код. Даже если вы введете «x», вы будете вынуждены не забыть удалить его как часть процесса отладки, иначе ваш код не будет работать (встроенная мера очистки, ура).
источник
x
будет иметь те же функции, что и добавлениеdebugger;
Отвечая на вопросы OP
Код в файлах .gs проекта скрипта Google Apps выполняется на сервере, а не в веб-браузере. Для записи сообщений в журнал использовалось средство ведения журнала классов .
Как сказано в сообщении об ошибке, проблема заключалась в том, что
console
не было определено, но в настоящее время тот же код будет вызывать другую ошибку:Это потому, что playerArray определяется как локальная переменная. Эту проблему решит перенос строки из функции.
var playerArray = []; function addplayerstoArray(numplayers) { for (i=0; i<numplayers; i++) { playerArray.push(i); } } addplayerstoArray(7); console.log(playerArray[3])
Теперь, когда код выполняется без ошибок, вместо того, чтобы смотреть в консоль браузера, мы должны взглянуть на Stackdriver Logging. В пользовательском интерфейсе редактора скриптов Google Apps нажмите « Просмотр»> «Ведение журнала Stackdriver» .
Дополнение
В 2017 году Google выпустил для всех скриптов Stackdriver Logging и добавил консоль классов, поэтому включение чего-то вроде
console.log('Hello world!')
ошибки не вызовет, но журнал будет находиться в службе журналов Stackdriver Logging Service облачной платформы Google, а не в консоли браузера.Из примечаний к выпуску Google Apps Script 2017
Из журнала> Ведение журнала Stackdriver
источник
В проекте скрипта Google вы можете создавать файлы HTML (пример: index.html) или файлы gs (пример: code.gs). Файлы .gs выполняются на сервере, и вы можете использовать Logger.log, как описывает @Peter Herrman. Однако, если функция создается в файле .html, она выполняется в браузере пользователя, и вы можете использовать console.log. Консоль браузера Chrome можно просмотреть , нажав Ctrl Shift J в Windows / Linux или Cmd Opt J на Mac
Если вы хотите использовать Logger.log в html-файле, вы можете использовать скриптлет для вызова функции Logger.log из html-файла. Для этого вы должны вставить <? Logger.log (что-то)?> Заменяя что-то тем, что вы хотите зарегистрировать. Стандартные скриптлеты, использующие синтаксис <? ...?> выполнить код без явного вывода содержимого на страницу.
источник
Обновлено на 2020 год
В феврале 2020 года Google объявил о крупном обновлении встроенной среды разработки скриптов Google Apps, которая теперь поддерживает console.log () . Итак, теперь вы можете использовать оба:
Удачного кодирования!
источник
console.log
поддерживалось до указанного обновления (см. мой ответ )