3

いくつかの見出し構造を持つドキュメントを動的に作成しています

doc = DocumentApp.create("My Document");
doc.appendParagraph("Main").setHeading(DocumentApp.ParagraphHeading.HEADING1);
var section = doc.appendParagraph("Section 1");
section.setHeading(DocumentApp.ParagraphHeading.HEADING2);

オンラインで開いて目次を挿入し、次のような URL で「セクション 1」に直接アクセスできます

問題は、実行時にコード内の「セクション 1」と同様の URL/ID を取得し、後でそれをリンクとして使用するにはどうすればよいかということです。

できない場合 - アンカー/ブックマークなどを設定してその URL を取得する方法はありますか?

ありがとう!

4

4 に答える 4

2

現在、TOC がないとドキュメントの一部 (セクション、段落など) のリンクを取得することはできません。また、GAS からブックマークを管理する方法もありません。問題トラッカーに問題があります。問題にスターを付けて宣伝することができます。

TOC を使用することによる回避策があります。次のコードは、TOC から URL を取得する方法を示しています。TOC が存在する場合にのみ機能します。TOC を削除すると、リンクは機能しなくなります。

function testTOC() {
  var doc = DocumentApp.openById('here is doc id');
  for (var i = 0; i < doc.getNumChildren(); i++) {
    var p = doc.getChild(i);
    if (p.getType() == DocumentApp.ElementType.TABLE_OF_CONTENTS) {
      var toc = p.asTableOfContents();
      for (var ti = 0; ti < toc.getNumChildren(); ti++) {
        var itemToc = toc.getChild(ti).asParagraph().getChild(0).asText();
        var itemText = itemToc.getText();
        var itemUrl = itemToc.getLinkUrl();
      }
      break;
    }
  }
}

この関数は、すべての文書部分を繰り返し、最初の目次を見つけ、それと変数itemTextを繰り返しitemUrl、目次項目テキストと URL を含めます。URL には#heading=h.uuj3ymgjhlie形式があります。

于 2012-09-03T08:19:30.567 に答える
0

ドキュメントがネイティブの Google ドキュメント タイプ (つまり、application/vnd.google-apps.document) であることが必須ですか?

ドキュメントを text/html として保存すると、ドキュメントをどのように組み立て、どのように公開するか (アンカーなど) をより細かく制御できます。

于 2012-09-05T11:39:00.130 に答える