質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google ドキュメント

Google ドキュメントは、Google社が提供している文書作成ツール。Googleアカウントがあれば無料で利用できます。ブラウザ上で文書作成を行い、複数人での同時編集がで可能。スマホやタブレットでも利用できる他、オフラインでの編集もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

1612閲覧

googleドキュメントの見出し(headling) のURL情報を、GASで取得したい

me_me_3

総合スコア0

Google ドキュメント

Google ドキュメントは、Google社が提供している文書作成ツール。Googleアカウントがあれば無料で利用できます。ブラウザ上で文書作成を行い、複数人での同時編集がで可能。スマホやタブレットでも利用できる他、オフラインでの編集もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/06/24 03:14

いろいろと調べてみたのですが、わからず、
初めて質問させていただきます。

googleドキュメントの見出し(headling) のURL情報を、GUIでは取得できるのですが、
GASで取得したいと考えています。
GUIの場合は、「概要」から見出しをクリックすることで、URLアドレスバーに表示されるので、
ここから、見出しリンク情報が分かります。
ドキュメント上で、GASでは、取得できないでしょうか?

https://docs.google.com/document/d/xxxxx/edit#heading=h.acqt6ykkwofa
URLのうち、以下の情報の取得の取り方がわからずおります。
h.acqt6ykkwofa

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

前提として、たとえば下記のような操作を行って見出しを設定しているとします。


① Googleドキュメントで、文中の見出しにしたい各タイトル文字列をドラッグで選択して、
メニューから「表示形式」→「段落スタイル」→「見出し1」→「『見出し1』を適用」をクリック
※見出しのサイズはここでは説明のため「1」にしていますが、後述の見出しリンクが作れればどれでもよいです。

イメージ説明

② 次に、文書の先頭にカーソルを移動し、メニューの「挿入」→「目次」→「青いリンクあり」のアイコンをクリック
イメージ説明

 
③ 上記の操作により、下の図のような状態になるはずです。
イメージ説明

これによって文書の先頭にテーブルコンテンツが挿入され、その中に見出しのリンクが入っている、という文書構造になります。

この文書構造に対して、見出しのテキストとリンクURLの一部(heading=~~以降)を抽出するコードは、下記になります。

js

1// コンテナバインドスクリプトと仮定。 2function myFunction() { 3 const doc = DocumentApp.getActiveDocument(); 4 5 for (let i = 0; i < doc.getNumChildren(); i++) { 6 const p = doc.getChild(i); 7 if (p.getType() == DocumentApp.ElementType.TABLE_OF_CONTENTS) { 8 const toc = p.asTableOfContents(); 9 for (let ti = 0; ti < toc.getNumChildren(); ti++) { 10 const itemToc = toc.getChild(ti).asParagraph().getChild(0).asText(); 11 const itemText = itemToc.getText(); 12 const itemUrl = itemToc.getLinkUrl(); 13 // テキストとURLをconsoleに表示 14 console.log(itemText); 15 console.log(itemUrl); 16 } 17 break; 18 } 19 } 20}

※前提を細かく定義したのは、以下の理由です。

  • リンクの作り方は複数あるため、もしかしたら質問者さんは別のやり方で作っているかもしれない、という可能性がある。
  • Googleドキュメントは文書構造が複雑になれば要素を辿っていくのに手間がかかる。仮に上記①~③のような単純な構造でない場合、上記のコードがうまくいかない可能性がある。

もし上記コードがうまく行かない場合は、現状のドキュメントのスクリーンショットや、見出しの作り方について説明していただけると、解決しやすいかもしれません。


この回答にあたっては、下記リンクを参考にしました:
https://stackoverflow.com/a/12244248

投稿2022/06/24 12:32

編集2022/06/24 13:01
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

me_me_3

2022/06/27 03:00

非常に丁寧なご回答ありがとうございます。 前提としては、以下を想定していました。  ー目次は挿入しない  ー文章構造は、いただいたようなシンプルな構造 いただいた方法だと、ドキュメントに一旦、目次挿入を実施する必要がありですね。 目次入れるとハイパーリンクが生成されるので、 .getLinkUrl() で取得できるのは、理解しました。 ちなみに、追加質問になってしまいますが、 「目次ーリンク有り」の挿入は、GASでも可能でしょうか?
退会済みユーザー

退会済みユーザー

2022/06/27 10:24 編集

見出しがリンク状態になっていなくとも、概要欄に見出しの一覧が表示され、クリックするとアドレス欄にリンクが表示されますが、このように文書内でリンクになっていない場合、概要欄CLICK時に表示されるリンクをGASで取得する手段は現状存在しません。 また、「目次ーリンク有り」の挿入をGASで行うことは現状できません。 Google document においてスクリプトで作成できるのは下記のページのうち太字のオブジェクトに限られます。 https://developers.google.com/apps-script/guides/docs#structure_of_a_document 目次に該当する Table of contents は、太字になっておらず、作成するメソッドがどこにもありません。 (マクロを使っても記録できません)
me_me_3

2022/06/28 04:44

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問