Google App Script:从getAttributes获取NULL值

时间:2018-03-30 11:00:29

标签: google-apps-script formatting google-docs

我希望从google doc获取所有属性,如( 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 \前面的颜色来自某些元素   BOLD:null

如果有其他方法可以,请告诉我。

1 个答案:

答案 0 :(得分:1)

不幸的是,这是Google文档中反复出现的问题。一些样式属性返回&#39; null&#39;除非在代码中明确设置。

例如,在执行下面的文档绑定脚本后,我得到了&#39; null&#39; PAGE_MARGIN和PAGE_WIDTH显示正确值时FONT_SIZE,FONT_FAMILY和其他一些属性的值:

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

但是,如果在脚本中显式设置这些属性,则记录body.getAttributes()的输出将返回这些新值

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