使用应用脚本格式化文本(Google文档)

时间:2017-12-15 10:38:18

标签: google-apps-script google-docs

我制作了一些应用脚本来格式化Google文档中的文字,但是:

  1. 我找不到如何在找不到文本时停止脚本中断。
  2. 脚本效率不高。

    // Set the whole body to Roboto 10
    var FontStyle = {};
    FontStyle[DocumentApp.Attribute.FONT_FAMILY] = 'Roboto';
    FontStyle[DocumentApp.Attribute.FONT_SIZE] = 10;
    
    body.setAttributes(FontStyle);
    
    // Set some elements to bold
    var BoldStyle = {};
    BoldStyle[DocumentApp.Attribute.BOLD] = true;
    
    var pattern1 = "Private & Confidential";
    var found1 = body.findText(pattern1);
    found1.getElement().setAttributes(BoldStyle)
    
    var pattern2 = "Your Reference:";
    var found2 = body.findText(pattern2);
    found2.getElement().setAttributes(BoldStyle)
    
    var pattern3 = "Our Reference:";
    var found3 = body.findText(pattern3);
    found3.getElement().setAttributes(BoldStyle)
    
    // Set some elements to right align
    var RightStyle = {};
    RightStyle[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT ] = 
    DocumentApp.HorizontalAlignment.RIGHT;
    
    var pattern4 = "\\[Date\\]";
    var found4 = body.findText(pattern4);
    found4.getElement().getParent().setAttributes(RightStyle);
    
  3. 有人可以帮忙吗?

    P

2 个答案:

答案 0 :(得分:1)

除了一个错误,正确的代码如下。错误是我仍然无法使日期正确对齐。有什么想法吗?

// Set the whole body to Roboto 10
  var FontStyle = {};
  FontStyle[DocumentApp.Attribute.FONT_FAMILY] = 'Roboto';
  FontStyle[DocumentApp.Attribute.FONT_SIZE] = 10;

  body.setAttributes(FontStyle);

  // Set some elements to bold
  var target1 = "Private & Confidential"
  var searchResult1 = body.findText(target1);
  if (searchResult1 !== null) {
    var thisElement1 = searchResult1.getElement();
    var thisElement1Text = thisElement1.asText();
    thisElement1Text.setBold(searchResult1.getStartOffset(), searchResult1.getEndOffsetInclusive(), true);
  }

  var target2 = "Your Reference:"
  var searchResult2 = body.findText(target2);
  if (searchResult2 !== null) {
    var thisElement2 = searchResult2.getElement();
    var thisElement2Text = thisElement2.asText();
    thisElement2Text.setBold(searchResult2.getStartOffset(), searchResult2.getEndOffsetInclusive(), true);
  }

  var target3 = "Our Reference:"
  var searchResult3 = body.findText(target3);
  if (searchResult3 !== null) {
    var thisElement3 = searchResult3.getElement();
    var thisElement3Text = thisElement3.asText();
    thisElement3Text.setBold(searchResult3.getStartOffset(), searchResult3.getEndOffsetInclusive(), true);
  }

  // Right align date
  var searchType = DocumentApp.ElementType.PARAGRAPH
  var target4 = "\\[Date\\]";
  var searchResult4 = body.findText(target4);

  while (searchResult4 = body.findElement(searchType, searchResult4)) {
   var par = searchResult4.getElement().asParagraph();
   if (searchResult4 != null) {
     par.setAlignment(DocumentApp.HorizontalAlignment.RIGHT);
  }
  }
  //  Update date
  var date = Utilities.formatDate(new Date(), "GMT", "d MMMMM yyyy");
  body.replaceText("\\[Date\\]", date);
 }

答案 1 :(得分:0)

我假设您的脚本在找到模式时正在工作,并且仅在找不到模式时才会中断。 所以这是我建议的方式:

// Set the whole body to Roboto 10
var FontStyle = {};
FontStyle[DocumentApp.Attribute.FONT_FAMILY] = 'Roboto';
FontStyle[DocumentApp.Attribute.FONT_SIZE] = 10;

body.setAttributes(FontStyle);

// Set some elements to bold
var BoldStyle = {};
BoldStyle[DocumentApp.Attribute.BOLD] = true;

var pattern1 = "Private & Confidential";
var found1 = body.findText(pattern1);
if (found1 != null) {
    found1.getElement().setAttributes(BoldStyle)
}

var pattern2 = "Your Reference:";
var found2 = body.findText(pattern2);
if (found2 != null) {
    found2.getElement().setAttributes(BoldStyle)
}

var pattern3 = "Our Reference:";
var found3 = body.findText(pattern3);
if (found3 != null) {
    found3.getElement().setAttributes(BoldStyle)
}

// Set some elements to right align
var RightStyle = {};
RightStyle[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] =
    DocumentApp.HorizontalAlignment.RIGHT;

var pattern4 = "\\[Date\\]";
var found4 = body.findText(pattern4);
if (found4 != null) {
    found4.getElement().getParent().setAttributes(RightStyle);
}

这是一个未经测试的代码,如果出现任何问题,请告诉我,我很乐意为您提供帮助。

感谢。