使用Google Apps脚本为Google文档中的表格设置“左缩进”

时间:2018-01-31 13:14:21

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

我们可以通过右键单击表格并选择“表格属性”来手动设置Google文档中表格的左缩进:

enter image description here

我尝试通过设置INDENT_FIRST_LINEINDENT_START属性来使用Google Apps脚本实现相同目标,但对表格没有任何影响:

var style = {};
style[DocumentApp.Attribute.INDENT_FIRST_LINE] = 72;
style[DocumentApp.Attribute.INDENT_START] = 72; 

body.insertTable(elementIndex, table).setAttributes(style);

如何使用Google Apps脚本为表格设置相同的属性?是否有其他方法可以实现相同的目标?

请为此问题加注星标,以便Google团队优先考虑:

https://issuetracker.google.com/issues/36764951

2 个答案:

答案 0 :(得分:0)

因为Apps脚本不提供此功能。我最终做了以下事情:

  • 创建一个具有两列的外部表。将边框宽度设置为零
  • 第一列的宽度是所需压痕的长度
  • 第二列的宽度是实际表格的宽度
  • 将表格插入第二列。生成的文档看起来好像表格已经缩进了

以下是上述算法的示例脚本:

var insertTableWithIndentation = function(body, 
                                        document, 
                                        originalTable, 
                                        elementIndex, 
                                        nestingLevel) {

  var docWidth = (document.getPageWidth() - 
                  document.getMarginLeft() - 
                  document.getMarginRight());

  var table = body.insertTable(elementIndex);
  var attrs = table.getAttributes();
  attrs['BORDER_WIDTH'] = 0;
  table.setAttributes(attrs);

  var row = table.appendTableRow();
  var column1Width = (nestingLevel+1) * 36;
  row.appendTableCell().setWidth(column1Width);

  var cell = row.appendTableCell();
  var column2Width = docWidth - column1Width;
  cell.setPaddingTop(0)
      .setPaddingBottom(0)
      .setPaddingLeft(0)
      .setPaddingRight(0)
      .setWidth(column2Width);

  cell.insertTable(0, originalTable);
}

答案 1 :(得分:0)

我来这里是为了寻找如何设置信封。以下对我有用: 在附加段落之后设置MarginLeft是关键。

const env = DocumentApp.create('Envelope');
  let body = env.getBody();
  body.setPageHeight(420);
  body.setPageWidth(600);
  for(let i = 1; i< 10; i += 1){
    body.appendParagraph('');
  }
  body.appendParagraph('Name');
  body.appendParagraph('Address');
  body.appendParagraph('Address');
  body.appendParagraph('City, State, Zip');
  body.setMarginLeft(300);

另一种解决方案是使用 setIndentFirstLine,例如:

  par = body.appendParagraph('City, State, Zip');
  par.setIndentFirstLine(20);