[英]How to log an object in Google Apps Script?
我是 Google Apps Script 的新手(我正在为 Google Docs 开发一个附加组件)并且在记录对象以进行调试时遇到问题。
例如,当我尝试获取以下信息并记录时
let x = DocumentApp.getActiveDocument().getSelection();
Logger.log(x);
记录器打印“范围”。 换句话说,它似乎在打印我要打印的对象的类型,而不是对其键和值(或任何 App Script 对象构成的)的字符串化。
相反,我想打印该对象的属性和相应的值。
根据文档,看起来 Logger 只接受字符串。 因此,我尝试使用JSON.stringify
对我尝试记录的对象进行字符串化,例如Logger.log(JSON.stringify(x));
,但它只是打印“{}”。 考虑到我已确保在文档中选择了某些内容,这似乎是错误的。 即使我将光标定位在文档中, getCursor()
也会发生同样的情况。
在记录对象之前对其进行字符串化似乎是朝着正确方向迈出的一步,但是......我做错了什么?
大多数(如果不是全部)内置对象的属性都是不可枚举的(请参阅对象的可枚举性和所有权)。 您可以使用Object.getOwnPropertyNames
和Object.getOwnPropertySymbols
的组合来获取大多数属性。 您可以使用Object.getOwnPropertyDescriptors
获取所有标志( enumerable
、 enumerable
configurable
等)
//@OnlyCurrentDoc
const getAllSelectionNames = () => {
'use strict';
const getObjNamesAndValues = x =>
Object.getOwnPropertyNames(x).map(k => ({ [k]: x[k] }));
const x = DocumentApp.getActiveDocument().getSelection();
if (x) console.log(getObjNamesAndValues(x));
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.