回答 OP 问题
A) 关于 Google Apps 脚本控制台在打印方面的工作方式,我有什么不明白的地方,以便我可以查看我的代码是否完成了我想要的工作?
Google Apps 脚本项目的 .gs 文件中的代码在服务器上而不是在网络浏览器上运行。记录消息的方法是使用Class Logger。
B) 代码有问题吗?
正如错误消息所说,问题是console
没有定义,但现在相同的代码会引发其他错误:
ReferenceError:未定义“playerArray”。(第 12 行,文件“代码”)
那是因为 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 脚本编辑器 UI 中,点击View > Stackdriver Logging。
附录
2017 年,Google 向所有脚本发布了 Stackdriver Logging 并添加了 Class Console,因此包括类似console.log('Hello world!')
的内容不会引发错误,但日志将在 Google Cloud Platform Stackdriver Logging Service 而不是浏览器控制台上。
来自Google Apps 脚本发行说明 2017
2017 年 6 月 23 日
Stackdriver Logging已退出抢先体验。所有脚本现在都可以访问 Stackdriver 日志记录。
从日志记录 > Stackdriver 日志记录
以下示例展示了如何使用控制台服务在 Stackdriver 中记录信息。
function measuringExecutionTime() {
// A simple INFO log message, using sprintf() formatting.
console.info('Timing the %s function (%d arguments)', 'myFunction', 1);
// Log a JSON object at a DEBUG level. The log is labeled
// with the message string in the log viewer, and the JSON content
// is displayed in the expanded log structure under "structPayload".
var parameters = {
isValid: true,
content: 'some string',
timestamp: new Date()
};
console.log({message: 'Function Input', initialData: parameters});
var label = 'myFunction() time'; // Labels the timing log entry.
console.time(label); // Starts the timer.
try {
myFunction(parameters); // Function to time.
} catch (e) {
// Logs an ERROR message.
console.error('myFunction() yielded an error: ' + e);
}
console.timeEnd(label); // Stops the timer, logs execution duration.
}