GASでスプレッドシートのセルに画像を挿入する完全ガイド 〜ついでにドキュメントにも挿入しよう〜


GASでスプレッドシートのセルに画像を挿入する方法
まず、スプレッドシートの特定のセルの位置に画像を挿入してみるぞ。
function insertImageInCell() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const url = "https://example.com/image.jpg";
const blob = UrlFetchApp.fetch(url).getBlob();
sheet.insertImage(blob, 2, 2); // B2セルに挿入
}
URLから画像を取得してセルに挿入するコードだ。
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
でアクティブなスプレッドシートのシートを取得する。
画像のURLを指定し、UrlFetchApp.fetch()
でその画像を取得する。
insertImage
メソッドを用いて、指定したセル(B2)の位置に画像を挿入する。
たとえば、次のコードを見てくれ。GAS専門プログラミングスクール「earthpg」のロゴを試しに挿入できる。
function insertImageInCell() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const url = "https://earthpg.school/wp-content/themes/earthpg-theme/images/logo_2.png";
const blob = UrlFetchApp.fetch(url).getBlob();
// B2セル位置(列=2, 行=2)に貼り付け
sheet.insertImage(blob, 2, 2);
}
これを実行すると、こんな感じになるはずだ。
えっ、画像がデカすぎてはみ出てる??
たしかに、もはやG列まで到達してるからな。
もしセル内にピッタンコで挿入したいなら、次のコードを試そう。
function insertImageInCellFormula() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const url = "https://earthpg.school/wp-content/themes/earthpg-theme/images/logo_2.png";
// B2セルにセル内画像として挿入
sheet.getRange("B2").setFormula(`=IMAGE("${url}")`);
}
setFormulaメソッドを使って、スプレッドシートのIMAGE関数で挿入さ。
これでセルの枠内に自動調整されて表示されるはずだ。


GASでドライブからスプレッドシートに画像を挿入する方法
Googleドライブに保存した画像をGASを用いてスプレッドシートに挿入しよう。
ドライブ内の画像を特定するには、ファイルIDを使うとよい。
function insertImageFromDrive() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const fileId = "your-file-id-here";
const file = DriveApp.getFileById(fileId);
const blob = file.getBlob();
sheet.insertImage(blob, 3, 3); // C3セルに挿入
}
DriveApp.getFileById()
は特定のファイルをファイルIDで取得するメソッドだ。
取得したファイルからBlobを得て、insertImage
を用いてスプレッドシートに挿入する。


GASでスプレッドシートにHTML出力で画像を挿入する方法
GASを使ってHTML出力に画像を取り込むこともできる。
HTMLサービスを使って画像を埋め込むコードだ。
function showImageInHtml() {
const url = "https://earthpg.school/wp-content/themes/earthpg-theme/images/logo_2.png";
const html = `
<div style="text-align:center; padding:20px;">
<img src="${url}" style="max-width:100%; height:auto;" />
</div>
`;
const userInterface = HtmlService.createHtmlOutput(html)
.setWidth(400)
.setHeight(300);
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Image Display");
}
HtmlService.createHtmlOutput() でHTML出力を作成する。
imgタグ
を使いsrc属性
に画像URLをセットすることで表示させる。
スプレッドシートの画面の中央にポップアップ表示されるはずだ。
番外編:GASでGoogleドキュメントに画像を挿入する方法
スプレッドシートはオッケーだな。
せっかくだから、Googleドキュメントに画像を挿入するケースもマスターしておこうぜ。
function insertImageInDocument() {
const doc = DocumentApp.openById("your-document-id-here");
const body = doc.getBody();
const url = "https://earthpg.school/wp-content/themes/earthpg-theme/images/logo_2.png";
const blob = UrlFetchApp.fetch(url).getBlob();
body.appendImage(blob);
}
DocumentApp.openById()
でGoogleドキュメントを開き、getBody()
でドキュメントのボディを取得する。
取得したBlobを用いて、appendImageメソッド
でボディ末尾に画像を追加する。
これを実行すると、こんな感じになるはずだ。


練習問題
- Googleドライブに保存された画像をスプレッドシートのA1セルの位置に挿入するコードを書いてみよう。
- 既存のGoogleドキュメントに画像を指定したURLから挿入する方法を試してみよう。
解答・解説
function insertImageInSpreadsheet() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const fileId = "your-file-id-here"; // ファイルIDを正しく設定
const file = DriveApp.getFileById(fileId);
const blob = file.getBlob();
sheet.insertImage(blob, 1, 1); // A1セルに挿入
}
DriveApp.getFileById(fileId)
でファイルを取得し、getBlob()
を使ってその画像のBlobを取得する。
insertImageメソッド
は指定したセルにBlobを挿入するために使用される。
function appendImageToDocument() {
const doc = DocumentApp.openById("your-document-id-here"); // ドキュメントIDを正しく設定
const body = doc.getBody();
const url = "https://example.com/image.jpg";
const blob = UrlFetchApp.fetch(url).getBlob();
body.appendImage(blob);
}
DocumentApp.openById("your-document-id-here")
を使用して、ドキュメントを開く。
appendImageメソッド
を使ってドキュメント内に画像を挿入する。