【Googleドキュメント】Apps Scriptで本文中の写真URLを画像化!URL→Image置換

【Googleドキュメント】Apps Scriptで本文中の写真URLを画像化!URL→Image置換
🛡️ 超解決

Googleドキュメントで、テキストとして記載された画像URLを実際の画像に置き換えたいと思ったことはありませんか。手動で1つずつ画像を挿入するのは時間がかかり、ミスも起こりやすい作業です。この記事では、Apps Scriptを使ってその作業を自動化する方法を解説します。スクリプトを実行するだけで、本文中のすべての写真URLを画像に変換できるようになります。

【要点】Apps ScriptでURLから画像への一括置換を実現

  • replaceUrlWithImage 関数: 文書内の全URLを画像に置き換えるメイン関数で、正規表現とsetInlineImageメソッドを使用します。
  • 正規表現 /https?:\/\/[^\s]+(jpg|jpeg|png|gif|webp)/gi: 画像URLのみを抽出するパターンで、拡張子で画像かどうかを判定します。
  • getBlob() と setInlineImage(blob): URLの画像データを取得し、インライン画像として段落に挿入する一連の処理です。

ADVERTISEMENT

URLから画像への一括変換が必要な理由とApps Scriptの利点

Googleドキュメントには、文書に画像を挿入する機能が標準で備わっています。しかし、テキストとしてURLが記載されている場合、それを一括で画像に変換する機能はありません。1つずつ手動で画像を挿入するのは、文書が長いほど非効率です。そこで活用したいのがApps Scriptです。Apps Scriptを使えば、文書内のすべての画像URLを自動的に検出し、実際の画像に置き換えるスクリプトを簡単に作成できます。このスクリプトはGoogleドキュメントのアドオンとして実行でき、手間と時間を大幅に削減します。また、スクリプトは再利用可能で、ほかの文書にも応用が効きます。さらに、画像の取得方法や挿入位置の調整など、細かなカスタマイズも可能です。

Apps Scriptで画像URLを一括置換する手順

ステップ1: スクリプトエディタを開く

  1. Googleドキュメントを開く
    画像URLが記載された文書を開きます。
  2. 拡張機能メニューを開く
    メニューバーから「拡張機能」→「Apps Script」を選択します。スクリプトエディタが新しいタブで開きます。

ステップ2: スクリプトコードを記述する

  1. コード.gsにコードを貼り付ける
    エディタが開いたら、既存のコードをすべて削除し、以下のコードを貼り付けます。

function replaceUrlWithImage() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var paragraphs = body.getParagraphs();
  for (var i = 0; i < paragraphs.length; i++) {
    var para = paragraphs[i];
    var text = para.getText();
    var urlRegex = /https?:\/\/[^\s]+(jpg|jpeg|png|gif|webp)/gi;
    var match;
    while ((match = urlRegex.exec(text)) !== null) {
      var url = match[0];
      var blob;
      try {
        blob = UrlFetchApp.fetch(url).getBlob();
      } catch(e) {
        continue;
      }
      var image = para.setInlineImage(blob);
      // 元のURLテキストを削除する
      para.replaceText(url, '');
    }
  }
}

このコードは、文書内のすべての段落を走査し、画像URL(jpg, jpeg, png, gif, webp)を検出します。各URLに対して画像データを取得し、その段落にインライン画像として挿入した後、元のURLテキストを削除します。UrlFetchApp.fetchで外部URLにアクセスするため、初回実行時には権限の承認が必要です。また、画像が取得できないURLはエラーをキャッチしてスキップされるため、一部のリンクが壊れていても処理は続行します。

ステップ3: スクリプトを実行する

  1. 関数を選択する
    スクリプトエディタのツールバーで「replaceUrlWithImage」関数を選択します。
  2. 実行ボタンをクリックする
    「▶」実行ボタンを押します。初回は承認画面が表示されるので、自分のアカウントを選択し、権限を承認します。
  3. 完了を確認する
    スクリプトが正常に完了すると、文書内の画像URLが実際の画像に置き換わっていることを確認できます。

スクリプト実行時の注意点と制限事項

画像URLが直接画像ファイルでない場合

このスクリプトは、URLの拡張子が画像形式であることを前提としています。WebページのURLなど画像直接でないURLには対応していません。その場合、エラーが発生するか、無視されます。対象のURLが画像ファイルへの直接リンクであることを確認してください。例えば、Googleフォトの共有リンクは直接の画像URLではないため、別途変換が必要です。

実行時間制限と回数制限

Apps Scriptには1回の実行あたりの最大実行時間(現在6分)と、1日あたりのURL取得回数制限があります。大量の画像URLがある場合は、複数回に分けてスクリプトを実行するか、一度に処理するURL数を制限する工夫が必要です。また、画像サイズが大きい場合は、取得に時間がかかるため注意してください。

画像が正しく表示されない場合

画像データの取得に失敗する場合があります。URLが無効であったり、アクセス権限がない場合はエラーとなります。また、画像サイズが大きすぎると、ドキュメントの表示が遅くなったり、容量制限に引っかかる可能性があります。必要に応じて画像を圧縮してからアップロードすることをおすすめします。さらに、取得した画像が期待と異なる形式で表示されることもあるため、事前にテストすることを推奨します。

元のURLテキストの扱いについて

スクリプトはURLテキストを空文字に置き換えますが、画像は段落の最後に挿入されます。元のURLが段落の途中にある場合、テキスト位置がずれる可能性があります。より精密に置換したい場合は、画像を特定の位置に挿入する処理を追加する必要があります。例えば、テキスト内のURL位置を取得し、その位置に画像を挿入するカスタマイズが考えられます。

ADVERTISEMENT

まとめ

この記事では、GoogleドキュメントのApps Scriptを使って、本文中の写真URLを一括で画像に置き換える方法を解説しました。replaceUrlWithImage関数を実行するだけで、手作業では時間のかかる置換処理を自動化できます。応用として、特定のURLパターンだけを対象にしたり、画像のサイズを調整する処理を追加することも可能です。また、同様のスクリプトをGoogleスプレッドシートの画像挿入にも応用できます。このスクリプトを基に、画像のサイズ制限や特定のURLのみを対象とするフィルタリングを追加することで、より実用的なツールに発展させられます。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED