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



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

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()的返回值是Trigger对象的数组,这些对象似乎没有toJSON方法或可以字符串化的值。

请参阅以下问题:为什么JSON.stringify为似乎具有属性的对象返回空对象表示法"{}"?了解更多背景信息。

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

您可以对数组进行迭代以访问其属性,例如,如下所示:

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() ));

有关每个触发器可以访问哪些属性的更多详细信息,请参阅此处的文档。

最新更新