GoogleドキュメントでTwitterのようにGASで自動リンク追加

Googleドキュメントで自動リンク

Googleドキュメントでは貼り付けたテキストがURLだと自動的にリンクになる。

しかし、iwb.jpのようなhttps:から始まらないドメインの場合はTwitterのように自動的にリンクになることはない。

GASでドメインを自動的にリンクに

Google Apps Script (GAS) を使用すればTwitterのようにiwb.jpのようなドメインを自動的にリンクに変換できる。

ただし、GoogleドキュメントはGoogleスプレッドシートのようにonEditが使用できないのでトリガーはonOpenを使用することになる。

onOpenを使用した場合、ドメインが入ったファイルが開かれた際にドメインがリンクに変換される。

やり方はまずonOpen内にgetParagraphs()でセクションに含まれるすべての段落を取得する。

すべての段落を取得したらforEachで各テキストをgetText()で取得してドメインの正規表現にマッチする場合はsetLinkUrlでマッチしたテキスト(ドメイン)に対してリンクを付与させるだけでできる。

function onOpen() {
  const body = DocumentApp.getActiveDocument().getBody()
  const paragraphs = body.getParagraphs()
  paragraphs.forEach(p => {
    const text = p.getText()
    const regex = /([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}/
    const match = text.match(regex)
    const linkLen = match ? match[0].length- 1 : null
    const index = match?.index
    if (match) {
      p.editAsText().setLinkUrl(index, index + linkLen , 'https://' + match[0] + '/')
    }
  })
}
GoogleドキュメントでTwitterのようにGASで自動リンク追加

GoogleドキュメントでTwitterのようにGASで自動リンク追加サンプル