将格式化的文本添加到Google文档

时间:2019-04-05 21:51:39

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

我有一个带有表格回复的Google表格。我创建了一些代码,以便每次填写表单时,结果都会填充到Google文档中。效果很好。

但是,我也想将文本添加到我的Google文档中,我可以使用以下方法完成

function myFunction(e) {
  var doc = DocumentApp.create('File');
  var text = 'insert text here';
  body.appendParagraph(text);
  doc.saveAndClose();
}

此文本仅作为纯文本添加,但是,我想格式化此文本。具体来说,我想添加文本,使其在文档正文中加粗,加下划线和居中对齐

我该怎么做?

经过一些互联网搜索和SO搜索之后,我尝试添加html(例如<b> </b>),然后尝试了text.setBold(true)。这些方法行不通。

我承认我对Google脚本编辑器中的编码了解甚少,因此我不确定该如何进行。我很幸运能收到所有表单答复,以填充一个命名的Google Doc文件!

2 个答案:

答案 0 :(得分:2)

这是我最近创建的文档的一部分:

    var nameStyle={};
    nameStyle[DocumentApp.Attribute.FONT_SIZE]=8;
    nameStyle[DocumentApp.Attribute.BOLD]=true;
    nameStyle[DocumentApp.Attribute.FOREGROUND_COLOR]='#000000';
    var valStyle={};
    valStyle[DocumentApp.Attribute.FONT_SIZE]=12;
    valStyle[DocumentApp.Attribute.BOLD]=false;
    valStyle[DocumentApp.Attribute.FOREGROUND_COLOR]='#cc0000';
    body.appendParagraph('Basic Project Data').setAttributes(hdg1Style);
    var p1=body.appendParagraph(Utilities.formatString('%s: ','PID')).setAttributes(nameStyle);
    var p2=body.appendParagraph(Utilities.formatString('%s',selObj.pid)).setAttributes(valStyle);
    p2.merge();
    for(var i=0;i<basicDataA.length;i++){
      var par1=body.appendParagraph(Utilities.formatString('%s: ',basicDataA[i][0])).setAttributes(nameStyle);
      var par2=body.appendParagraph(Utilities.formatString('%s',basicDataA[i][1])).setAttributes(valStyle);
      par2.merge();
    }

请注意,首先添加appendParagraph,然后再设置setAttributes。

答案 1 :(得分:0)

以上回复使我走上了正确的道路(谢谢!)。 Google没有很好地记录此功能,有些功能应该无法使用。我已经找到了有关使用偏移量进行格式化的信息,但这非常繁琐且冗长。这是将示例格式的文本插入Google文档的完整示例方法。希望它可以帮助别人。显然,可以将2D数组连接起来以便从表单中获取,但这至少将显示其余格式的工作原理。

      // Open a document by ID.
  var body = DocumentApp.openById('YourDocId').getBody();
  
  var authorAffils = [['Tony Tiger',1],['Micky Mouse',2],['Daffy Duck',3],['Elmo Orange',4]];
  
  var nameStyle={};
  nameStyle[DocumentApp.Attribute.FONT_SIZE]=11;
//  nameStyle[DocumentApp.TextAlignment.Normal]; // This seems to do nothing
  nameStyle[DocumentApp.Attribute.FOREGROUND_COLOR]='#000000';
  
  var affilStyle={};
  affilStyle[DocumentApp.Attribute.FONT_SIZE]=11;
//  affilStyle[DocumentApp.TextAlignment.SUPERSCRIPT];  // This seems to do nothing
  affilStyle[DocumentApp.Attribute.FOREGROUND_COLOR]='#cc0000';
      
  for(var i=0;i<authorAffils.length;i++){
    var par1=body.appendParagraph(Utilities.formatString(' %s,',authorAffils[i][0])).setAttributes(nameStyle);
    var par2=body.appendParagraph(Utilities.formatString('%s',authorAffils[i][1])).setAttributes(affilStyle);
    // I am not entirely clear why alignment only works this way whereas font size and color work the other way.
    par1.setTextAlignment(DocumentApp.TextAlignment.NORMAL).merge();
    par2.setTextAlignment(DocumentApp.TextAlignment.SUPERSCRIPT).merge();
  }