Google Apps脚本:脚本格式文档中的奇怪页面布局

时间:2013-11-14 17:18:26

标签: google-apps-script google-docs

我正在制作一个脚本,将自定义标题应用于Google文档中导入的纯文本文档。这些脚本非常适合。但是,生成的文档有一个奇怪的布局,就像在这里和那里插入随机分页符一样。但是没有分页符,我无法理解这种布局的原因。检查段落属性不会给我带来什么错误的提示。

以下是应用脚本之前的文本:

https://docs.google.com/document/d/1MzFvlkG13i3rrUcz5jmmSppG4sBH6zTXr7RViwdqaIo/edit?usp=sharing

您可以复制文档并执行脚本(从“脚本”菜单中选择“应用标题”)。该脚本将适当的标题应用于场景标题,角色名称,对话等。

正如您所看到的,在结果文档的第2页和第3页的底部有一个很大的差距,我无法弄清楚原因。段落属性对我来说似乎没问题......

以下是该脚本的副本:

// Apply headings to sceneheadings, actions, characters, dialogues, parentheticals 
// to an imported plain text film script;

function ApplyHeadings() {
  var pars = DocumentApp.getActiveDocument().getBody().getParagraphs(); 
  for(var i=0; i<pars.length; i++) {
    var par = pars[i];
    var partext = par.getText();
    var indt = par.getIndentStart();
    Logger.log(indt);
    if (indt > 100 && indt < 120) {
      var INT = par.findText("INT.");
      var EXT = par.findText("EXT.");
      if (INT != null || EXT != null) {
        par.setHeading(DocumentApp.ParagraphHeading.HEADING1);
        par.setAttributes(ResetAttributes());
      }
      else {
        par.setHeading(DocumentApp.ParagraphHeading.NORMAL);
        par.setAttributes(ResetAttributes());
      }
    }
    else if (indt > 245 && indt < 260) {
      par.setHeading(DocumentApp.ParagraphHeading.HEADING2);
      par.setAttributes(ResetAttributes());
    }
    else if (indt > 170 && indt < 190) {
      par.setHeading(DocumentApp.ParagraphHeading.HEADING3);
      par.setAttributes(ResetAttributes());
    }
    else if (indt > 200 && indt < 240) {
      par.setHeading(DocumentApp.ParagraphHeading.HEADING4);
      par.setAttributes(ResetAttributes());       
    }
  }
}

// Reset all the attributes to "null" apart from HEADING;
function ResetAttributes() {
  var style = {};
  style[DocumentApp.Attribute.STRIKETHROUGH] = null;
  style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = null;
  style[DocumentApp.Attribute.INDENT_START] = null;
  style[DocumentApp.Attribute.INDENT_END] = null;
  style[DocumentApp.Attribute.INDENT_FIRST_LINE] = null;
  style[DocumentApp.Attribute.LINE_SPACING] = null;
  style[DocumentApp.Attribute.ITALIC] = null;
  style[DocumentApp.Attribute.FONT_SIZE] = null;
  style[DocumentApp.Attribute.FONT_FAMILY] = null;
  style[DocumentApp.Attribute.BOLD] = null;
  style[DocumentApp.Attribute.SPACING_BEFORE] = null;
  style[DocumentApp.Attribute.SPACING_AFTER] = null;
  return style;
}

一些屏幕截图可以使问题更加清晰。

在应用脚本之前,这是文档的第2页。

Page 2 before script

这是应用脚本后的第2页。标题应用正确,但......为什么底部的空白区域?

enter image description here

注意:如果您手动将HEADING2重新应用到第3页的第一段(音频电视),该段落将跳回以填充第2页底部的空格。但是,此操作不会更改任何段落中的属性。那么为什么魔术会发生?

非常感谢您的耐心等待。

1 个答案:

答案 0 :(得分:1)

这是一个有趣的问题; - )

我复制了你的文档,运行了脚本并有一个惊喜:什么都没发生!

我花了几分钟才意识到我刚制作的副本没有为标题定义样式,所有内容都是出于某种原因,包括标题在内的新的12pt.

我检查了日志并看到了缩进值,并用很多东西来玩,最终看到标题在那里,但没有改变样式。

所以我进入了doc菜单并设置了'使用我的默认样式......一切看起来都很好,请参阅下面的屏幕截图。 enter image description here

所以现在你的问题是:你的风格定义肯定有问题,“错误”我的意思是改变的不仅仅是字体样式和大小但老实说我看不出有什么方法可以猜到什么因为我无法重现它...请尝试重置标题样式并重新定义默认值....然后告诉我们会发生什么。

PS:这是我的默认标题样式:(仅在视图中我的副本的网址:https://docs.google.com/document/d/1yP0RRCrRSsQc9zCk-sdfu5olNGDkoIrabXanII4qUG0/edit?usp=sharing

enter image description here