1

我创建了一个简单的 Web 应用程序(发布为可供匿名用户访问),它获取查询参数,如下所示:

function doGet(e){Logger.log("Key is"+e.parameter.key);}

将参数传递给应用程序,如下所示: https ://script.google.com/macros/s/AKfycbxZ_r7tTs1sCQH9UOhPg2AVdWuMCDk6zD58lnsXciazRLmZ7q7P/exec?key=test

当我以登录用户的身份点击 url 时,它工作正常,能够获取参数。但是当匿名用户点击相同时,数据不会被记录。

是否可以。如何做到这一点?

4

1 回答 1

3

这里对问题陈述进行了细微的调整 - Logger 仅适用于脚本所有者(也恰好被记录)。我仔细检查过,这确实是行为。我检查了以另一个具有测试帐户的登录用户身份访问一个简单的 Web 应用程序,而 Logger 也不适用于该帐户。

这实际上是当前 Logger 的一个已知限制。

记录器在您编写代码时对调试更有用,而不是在其他人访问您的代码时。记录器信息也不会在不同的运行中保留。

我实际上最终将我的日志语句写入了一个简单的文件。我添加了一些小东西,比如时间戳,你可以让它变得更加健壮。如有必要,您甚至可以向其中添加异常日志和有效的用户信息。

下面是一些关于我通常如何通过留给读者的几个练习来设置它的片段。

我运行一次的功能 -

function initLog() {
  //add check to see if log already exists so you don't init multiple times
  var logfile = DocsList.createFile('Log file for my script','') ;
  ScriptProperties.setProperty('LogFile', logfile.getId());
  logfile.getId();
}

我可以从代码中的任何位置调用的实用函数 -

function logMsg(msg){
 //add more checks here to init log if its not already done
 var logfile = DocsList.getFileById(ScriptProperties.getProperty('LogFile'));
 logfile.append(new Date().toString() + ' - ' + msg + '\n');  
}

简单的线束来展示它是如何工作的——

function logTests(){
 initLog();
 logMsg('hello world');
 logMsg('test message');
}

这就是它的样子。希望这可以帮助。 在此处输入图像描述

于 2013-01-24T20:24:58.163 回答