2

質問: Google ドキュメントのドキュメントで見出し参照 (#heading=h.12345 の形式) を読む方法は?

背景: ドキュメント内で相互参照を使用したいと考えています。例。

1.1 Chapter 1 (i.e. paragraph has heading DocumentApp.ParagraphHeading.HEADING1)

Sample text. For more, see chapter 1.2.

1.2 Chapter 2

Sample text. For more, see chapter 1.1.

現在、Google ドキュメントは相互参照 (リンクを挿入) を行うことができますが、「通常の」リンクであり、章番号はありません。

したがって、アプローチは次のようになります。 - 相互参照用のリンクを挿入します。

  • apps スクリプトを使用して、見出し参照と章番号のインデックスを作成します

  • また、アプリスクリプトを使用して、リンクに基づいて章のテキストを更新してください

私は成功せずに getLinkUrl を見ました:

var links = [];
var ps = DocumentApp.getActiveDocument().getBody().getParagraphs();
for(var i = 0; i < ps.length; i++) {
  var h = ps[i].getHeading();
  if( h == DocumentApp.ParagraphHeading.HEADING1 ) {
    var t = ps[i].editAsText();
    var u = t.getLinkUrl();
  }
}

見出し参照をまったく読むことはできますか?

4

2 に答える 2

1

見出し参照をまったく読むことはできますか?

絶対に、少なくとも目次から。これらの参照はattributesTOC エントリにあります。この回答で、スクリプトを使用した例を確認できます。

于 2013-09-12T01:27:38.823 に答える
1

インスタンスが 1 つしかないと仮定して HEADING1 を検出するためのコード (わずかに変更) を次に示します。他の見出しタイプや複数の出現を検出するように適合させることができます。

function get_some_heading() {
  var ps = DocumentApp.getActiveDocument().getBody()
  var searchType = DocumentApp.ElementType.PARAGRAPH;
  var searchHeading = DocumentApp.ParagraphHeading.HEADING1;
  var searchResult = null;

  while (searchResult = ps.findElement(searchType, searchResult)) {
    var par = searchResult.getElement().asParagraph();
    if (par.getHeading() == searchHeading) {
      // Found one, update Logger.log and stop.
      var h = searchResult.getElement().asText().getText();

      return h;
    }
  }

  //return null or something
}

これは enum Paragraph Headingリファレンスです。これは上記で使用された検索パターンリファレンスです (わずかに異なるユース ケースの場合)。

于 2017-01-01T01:31:30.970 に答える