javascript - 如何包装对接受无限参数的 Google Apps 脚本函数的调用

标签 javascript google-apps-script rhino

某些 Google Apps 脚本函数(例如 Logger.log() 和 Utility.formatString())接受无限的参数。

我想包装对 Logger.log() 或 Utility.formatString() 的调用,以便在最里面的函数调用中,我可以在结果字符串前面加上时间戳和我自己的文本。通常,您只需.apply当前模块的标记到该函数,但在我的测试中,这并不能按预期工作。它会导致错误 TypeError: Cannot find default value for object。 (第 14 行,文件“代码”) 其中 looks来自 java/服务器端。

这是我用于测试的代码。问题:

  1. 这是这些 Apps 脚本方法中的错误吗?
  2. 是否有解决方法或替代方法来实现我的目标?

如果这是一个错误,我也会将其记录在问题跟踪器跟踪器上

function testMyLogger() {
  myLogger('Testing %s %s %s', 'one', 2, 'three'); 
}

function myLogger()  {
  // do common things like prefix a timestamp to the first arg
    var logdate = Utilities.formatDate(new Date(), Session.getTimeZone(), "yyyy-MM-dd HH:mm:ss");
    arguments[0]= logdate + " " + arguments[0]; 

  Logger.log.apply(this, arguments); 
  // At the above line I get error "TypeError: Cannot find default value for object. (line 14, file "Code")"
  // but I expected '<timestamp> Testing one 2.0 three' to the log (View > Logs...)
}

最佳答案

尝试Logger.log.apply(Logger,参数);

关于javascript - 如何包装对接受无限参数的 Google Apps 脚本函数的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913071/

相关文章:

javascript - 如何使用 iframe-resizer 更改 GAS iframe(在 WordPress 中)的高度

google-apps-script - 如何在触发功能中播放声音

javascript - Alfresco JavaScript/Rhino 多线程处理和并发

javascript - Cookie 返回的格式可能错误

javascript - Node.js - 使用 sendFile 将文件发送到客户端

javascript - 获取 Django 站点中的 Disqus 中的评论是否为父评论

javascript - 清除多个工作表中的多个范围

java - 使用Rhino将动态构造的对象作为参数传递给JS函数

java - Rhino:如何将 Java 对象传递给脚本,其中可以引用为 "this"

javascript - 使用 Javascript 将多个输入字段合并为一个输入字段?