JSON.stringify 将数组中的所有对象打印为 [{},{},{}]

JSON.stringify print all objects in an array as [{},{},{}]

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

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 ={}

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

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

查看此问题 了解更多背景信息。

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

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

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