繁体   English   中英

如何在 Google Apps Script 中记录对象?

[英]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.getOwnPropertyNamesObject.getOwnPropertySymbols的组合来获取大多数属性。 您可以使用Object.getOwnPropertyDescriptors获取所有标志( enumerableenumerable 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM