打印在谷歌Apps脚本控制台?(Printing to the console in Google

2019-07-31 13:04发布

我很新的节目(已经采取了一些JS课程上Codecademy网站)。 我试图创建一个简单的脚本来确定,如果给来自一个扑克游戏,谁应为之结果的电子表格。 我打开了谷歌Apps脚本,并写了下面开始:

function addplayerstoArray(numplayers) {

  var playerArray = [];

  for (i=0; i<numplayers; i++) {
    playerArray.push(i);
  }
}  

addplayerstoArray(7);

console.log(playerArray[3])

我们的想法是创建一个玩家在其总数的数组。 当运行代码,我认为它会打印出“3”到控制台。 但是什么都没有发生。 它说

“的ReferenceError:‘控制台’没有定义”。

A)我怎么不明白对谷歌Apps脚本控制台相对于印刷是如何工作的,这样我可以看到,如果我的代码实现想什么吗?

b)是它的代码有问题吗?

Answer 1:

因为代码是在云中运行,而不是在你的浏览器的控制台不可用。 相反,使用记录仪气提供类:

Logger.log(playerArray[3])

然后查看结果下查看>日志的IDE ...

这里有一些文件用气测 。

编辑:2017年7月20日的Apps脚本现在还提供为Stackdriver记录 。 控制台日志 - 下查看脚本编辑器中查看这些日志。



Answer 2:

只是建立在vinnief的哈克解决方案上面,我使用MSGBOX是这样的:

Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);

和它的作用有点像一个破发点,停止任何字符串你需要一个弹出框脚本和输出。 我觉得尤其是在表,在那里我有麻烦Logger.log,这提供了充足的工作区最次。



Answer 3:

在谷歌的脚本项目,你可以创建HTML文件(例如:index.html的)或GS文件(例如:code.gs)。 该.GS文件在服务器上执行,你可以使用Logger.log作为@Peter赫尔曼介绍。 但是,如果一个.html文件创建功能它被用户的浏览器执行,你可以使用的console.log。 Chrome浏览器的控制台可以看到按Ctrl + Shift键J于Mac上的Windows / Linux或者Cmd的选项Ĵ

如果你想使用Logger.log上的HTML文件,你可以使用一个小脚本调用从HTML文件中Logger.log功能。 要做到这一点,你会插入 与您要登录任何东西代替。 标准脚本元素,使用语法<? ...?>,但没有明确的内容输出到页面执行代码。



Answer 4:

尽管Logger.log()在技术上是正确的方式来输出不同的是控制台,它有几个烦恼:

  1. 输出可以是非结构化的混乱和难以快速消化。
  2. 你必须先运行该脚本,然后单击查看/日志,这是两个额外的点击(一个,如果你还记得Ctrl + Enter快捷键)。
  3. 你必须插入Logger.log(playerArray)然后调试后,你可能想要删除Logger.log(playerArray)因此1-2个更多的步骤。
  4. 你必须点击确定关闭叠加(又一个额外的点击)。

取而代之的是,每当我想调试我的东西添加断点(点击行号),然后按Debug按钮(臭虫图标)。 断点工作得很好,当你指定的东西一个变量,但不是那么好当你启动一个变量,并且希望在以后,这是类似什么op是试图做它里面偷看。 在这种情况下,我会强制终止条件输入“X”(X标记当场!)抛出一个运行时错误:

与查看日志比较:

调试控制台包含更多的信息,是一个更容易比日志覆盖阅读。 这个方法的一个次要的好处是,你永远不必担心与一帮记录命令的污染你的代码,如果保持干净的代码是你的事。 即使你输入“X”,你不得不记住要删除它作为调试过程的一部分,否则你的代码将无法运行(内置的清理措施,耶)。



Answer 5:

回答这些问题的任择议定书

A)我怎么不明白对谷歌Apps脚本控制台相对于印刷是如何工作的,这样我可以看到,如果我的代码实现想什么吗?

在谷歌的Apps脚本项目.GS文件中的代码在服务器上,而不是在网络浏览器上运行。 记录消息的方式是使用类记录仪 。

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记录。 从视图>为Stackdriver记录的谷歌Apps脚本编辑器UI点击。

附录

2017年谷歌发布的所有脚本为Stackdriver记录并添加了类控制台,所以包括像console.log('Hello world!')不会引发错误,但日志将在谷歌云平台为Stackdriver记录服务,而不是浏览器的安慰。

从谷歌Apps脚本发行说明2017年

2017年6月23日

为Stackdriver记录已迁出的早期访问。 所有的脚本现在可以访问为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. } 


文章来源: Printing to the console in Google Apps Script?