【问题标题】:JSON.stringify print all objects in an array as [{},{},{}] [closed]JSON.stringify 将数组中的所有对象打印为 [{},{},{}] [关闭]
【发布时间】:2021-08-17 14:39:09
【问题描述】:

当我运行这段代码时,我得到以下输出:

var triggers = ScriptApp.getProjectTriggers();
Logger.log("triggers =" + JSON.stringify(triggers));
for (var j = 0; j < triggers.length; j++) {
  Logger.log("trigger +"[i]+" =" + JSON.stringify(triggers[i]));
}
};

输出:

5:55:16 PM  Info    triggers =[{}, {}, {}]
5:55:16 PM  Info    t ={}

我知道有几个不是空的对象,为什么不显示为字符串?

【问题讨论】:

  • 你的问题是什么?
  • 我知道有几个不是空的对象,为什么不显示为字符串?

标签: json google-apps-script logging stringify


【解决方案1】:

ScriptApp.getProjectTriggers() 的返回值是 array of Trigger objects - 这些对象似乎没有 toJSON 方法或可以字符串化的值。

有关更多背景信息,请参阅此问题Why does JSON.stringify return empty object notation “{}” for an object that seems to have properties?

我假设您有一个包含三个触发器对象的数组,根据您的输出 [{}, {}, {}] 判断。

您可以遍历您的数组以访问其属性 - 例如,如下所示:

var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
  Logger.log( triggers[i].getEventType() );
}

假设您的脚本附加了 1 个基于时间的触发器和 1 个日历事件触发器,您将看到以下输出:

3:54:07 PM  Info    CLOCK
3:54:07 PM  Info    ON_EVENT_UPDATED

更紧凑的迭代方式是:

var triggers = ScriptApp.getProjectTriggers();
triggers.forEach(trigger => Logger.log( trigger.getEventType() ));

请参阅文档here,详细了解您可以为每个触发器访问哪些属性。

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 1970-01-01
    • 2020-01-15
    • 2014-09-22
    • 2020-07-19
    • 1970-01-01
    • 2017-08-22
    • 2011-07-28
    • 2015-01-31
    相关资源
    最近更新 更多