Google 应用脚本:从 getAttributes 获取 NULL 值

Google App Script: Getting NULL values from getAttributes

我想从 google 文档中获取所有属性,例如(BOLD、UNDERLINE、FOREGROUND_COLOR、FONT_SIZE 等)。但是我在使用 getAttributes 时得到 NULL 值。 以下是我的代码。

var fields = doc.getNamedRanges("myFields");
var lastFontColor; 
for(var i = 0; i < fields.length; i++)
{
  var rangeElement = fields[i].getRange().getRangeElements()[0];      
  var obj= rangeElement.getElement().asText().editAsText();
  var element= rangeElement.getElement().asText();  
  var atts = obj.getAttributes(); 
  for (var att in atts) 
  {
    Logger.log("value of " + att + ":" + atts[att]);
  }
}

我得到的输出:-

FONT_SIZE: null
ITALIC: null
STRIKETHROUGH: null
FOREGROUND_COLOR: #0000ff \ fore colors comes for some of elements.
BOLD: null

请告诉我是否有任何其他方法可以做到这一点。

不幸的是,这是 Google 文档中反复出现的问题。某些样式属性 return 'null' 除非在代码中明确设置。

例如,执行以下 document-bound 脚本后,我得到 FONT_SIZE、FONT_FAMILY 和其他一些属性的 'null' 值,而 PAGE_MARGIN和 PAGE_WIDTH 显示正确的值:

 var doc = DocumentApp.getActiveDocument();
 var body = doc.getBody();     
 var styles = body.getAttributes();      
 Logger.log(styles);

但是,如果您在脚本中明确设置这些属性,记录 body.getAttributes() 的输出将 return 这些新值

  var styles = {};
  styles[DocumentApp.Attribute.FONT_FAMILY] = "Times New Roman";
  styles[DocumentApp.Attribute.FONT_SIZE] = 16;
  body.setAttributes(styles);