GoogleスプレッドシートのデータをGoogleドキュメントのテンプレートへ差し込む処理をGAS(Google Apps Script)で自動化する場合、文字情報は正常に反映できても、画像だけURL文字列として表示されてしまうことがあります。
これは、画像のリンクを単純な文字列として置換していることが原因です。画像をドキュメント内へ表示するには、GAS側で画像データを取得し、Googleドキュメントへ画像として挿入する処理が必要になります。
GASで画像がURL表示になる原因
Googleスプレッドシートのセルに入力された画像URLは、通常の文字列データとして扱われます。そのため、テンプレート内の{{写真}}のような置換処理でURLを差し込むだけでは、画像そのものではなくリンク文字列が表示されます。
例えば、スプレッドシートに「https://example.com/photo.jpg」という画像URLが保存されている場合、GASで以下のような単純置換をすると、ドキュメントには写真ではなくURLだけが表示されます。
画像を表示するには、URLから画像ファイルを取得し、Googleドキュメントの該当位置へBlob形式で挿入する必要があります。
Googleドキュメントへ画像を差し込む基本的な流れ
画像付きの差し込み印刷を行う場合は、以下のような流れで処理します。
- Googleスプレッドシートから1行分のデータを取得する
- 画像URLのセル情報を取得する
- GASで画像URLから画像データを取得する
- Googleドキュメント内の指定位置へ画像を挿入する
- 氏名や住所などの文字情報も同時に置換する
文字データと画像データでは処理方法が異なるため、画像だけ専用の処理を追加する必要があります。
GASで画像をGoogleドキュメントへ挿入する方法
Googleドキュメント内の{{写真}}という文字を画像に置き換える場合、以下のような処理を利用できます。
例えば、スプレッドシートの画像URLがphotoUrlという変数に入っている場合は、UrlFetchAppで画像を取得してDocumentAppで挿入します。
function insertImage(){
const doc = DocumentApp.openById('ドキュメントID');
const body = doc.getBody();
const imageUrl = '画像URL';
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const search = body.findText('{{写真}}');
if(search){
const element = search.getElement();
element.asText().deleteText(search.getStartOffset(), search.getEndOffsetInclusive());
body.insertImage(0,imageBlob);
}
doc.saveAndClose();
}
実際の差し込み印刷では、画像を入れる位置やサイズ調整が必要になるため、テンプレートの構造に合わせて調整してください。
Googleドライブ上の写真を差し込む場合の注意点
画像URLがGoogleドライブの共有リンクの場合、そのままUrlFetchAppで取得できないことがあります。GoogleドライブのファイルIDを取得して、DriveAppから画像を取得する方法が安定しています。
例えば、社員名簿や会員名簿の写真を管理している場合は、スプレッドシートには画像URLではなくGoogleドライブのファイルIDを保存しておくと、GASで扱いやすくなります。
また、画像ファイルの共有設定が限定公開の場合、GASを実行するアカウントに閲覧権限がないと画像取得に失敗します。
差し込み印刷でよくあるトラブルと確認ポイント
画像だけ表示されない場合は、以下の点を確認すると原因を特定しやすくなります。
| 症状 | 確認するポイント |
|---|---|
| URLだけ表示される | 画像挿入処理ではなく文字置換になっている |
| 画像が表示されない | 画像URLの公開設定を確認する |
| GASでエラーになる | 画像ファイルへのアクセス権限を確認する |
| 画像サイズがおかしい | insertImage後にサイズ調整を追加する |
特に多い原因は、文字列置換処理だけで画像も処理しようとしているケースです。画像は文字と同じ扱いではないため、別処理として組み込む必要があります。
まとめ
GoogleスプレッドシートからGoogleドキュメントへGASで差し込み印刷を行う場合、画像URLをそのまま置換するとリンク文字列として表示されます。
写真をドキュメントへ貼り付けたい場合は、GASで画像を取得してBlob化し、Googleドキュメントへ画像として挿入する処理を追加することが重要です。
文字情報は通常の差し込み処理、画像は専用の画像挿入処理として分けて考えることで、名簿や会員証、資料作成などの自動化を正しく実現できます。


コメント