0

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 ページ目です。

スクリプトの前のページ 2

これは、スクリプトが適用された後の 2 ページ目です。見出しは正しく適用されますが...下部に空白があるのはなぜですか?

ここに画像の説明を入力

注: 3 ページ目の最初の段落 (AUDIO TV) に手動で HEADING2 を再適用すると、2 ページ目の下部のスペースを埋めるために段落がジャンプして戻ります。ただし、このアクションでは、段落。では、なぜ魔法が起こるのでしょうか。

お待たせいたしました。

4

1 に答える 1

1

それは興味深い問題でした;-)

私はあなたのドキュメントをコピーし、スクリプトを実行しましたが、驚きました: 何も起こりませんでした!

作成したばかりのコピーには見出しのスタイルが定義されていないことに気付くのに数分かかりました。見出しを含め、何らかの理由ですべてが courier new 12pt でした。

ログを調べて、インデントの値を確認し、それをいろいろいじって、最終的に見出しはあるがスタイルは変更されていないことを確認しました。

そこで、ドキュメント メニューに移動し、「デフォルト スタイルを使用すると... すべて問題ないように見えます。以下のスクリーン キャプチャを参照してください。 ここに画像の説明を入力

だから今あなたの質問:あなたのスタイル定義に何か問題があるに違いないように見えます. m 再現できません... 見出しスタイルをリセットして、デフォルトを再定義してみてください....その後どうなるか教えてください。

PS : ここに私のデフォルトの見出しスタイルがあります: (そして私のコピーの URL は表示のみです: https://docs.google.com/document/d/1yP0RRCrRSsQc9zCk-sdfu5olNGDkoIrabXanII4qUG0/edit?usp=sharing )

ここに画像の説明を入力

于 2013-11-14T20:31:33.173 に答える