Amazonで商品を見るセール会場へ

Googleスプレッドシート│セルに画像を入れる方法とIMAGE関数の使い方

スプレッドシートのセルに画像を入れる方法は2つあります。

用途に合わせて選ぶことで、後からの管理や並べ替えのしやすさが変わります。

メニューから挿入IMAGE関数
手軽さ手軽に挿入できる数式を入力する
画像の置き場所パソコン内のファイル公開URLが必要
一括挿入1つずつ配置数式のコピーで一括表示
並べ替え時の挙動セルの移動に追従するセルの移動に追従する

手元の画像ファイルを少数配置したい場合はメニューからの挿入、画像URLの一覧から一括で表示したい場合はIMAGE関数が適しています。

目次

メニューからセル内に画像を挿入する手順

  1. 画像を配置したいセルを選択する
  2. メニューバーの「挿入」>「画像」を選択する
  3. 「セル内に画像を挿入」を選択する
  4. 挿入したい画像ファイルを選択してアップロードする

画像は縦横比を保ったまま、セルの大きさに合わせて自動で収まります。

「セル内」と「セル上」の違い

同じメニュー内には「セル上に画像を挿入」という項目も用意されています。

動作や用途が大きく異なるため、違いを整理して使い分けましょう。

セル内セル上
画像の扱いセルの値として格納されるシートの上に浮動配置される
行を並べ替えた場合セルと一緒に移動する元の位置に固定されたまま残る
行や列のサイズ変更時セルのサイズに合わせて伸縮するサイズは変化しない
適した用途一覧表、商品カタログロゴや説明図の配置

データを一覧表として管理する場合は「セル内」を選びます。

行を並べ替えたりフィルタを適用したりしても、画像がずれるトラブルを防げます。

注意点:画像を入れたセルには文字を入力できない

セル内画像を使用する際は、セルの仕様に注意が必要です。

画像を入れたセル自体には、文字列や数値を同時に入力できません。

商品名や説明文と並べたい場合は、画像用とテキスト用で列を分けて配置します。

貼り付けでセル上へ配置された場合は、画像のメニューからセル内へ移すか、挿入メニューでセル内画像を選び直してください。

URLの一覧からIMAGE関数で一括表示する

Web上に画像がある場合は、関数を活用して効率よく配置できます。

画像のURLが列に並んでいる場合は、数式を下方向にオートフィルするだけで一括表示できます

商品点数が多いカタログなどを作成する際は、作業時間を大幅に短縮できます。

IMAGE関数とは

IMAGE() 関数を使うと、Web上の画像URLを参照して、画像をセル内に直接表示できます。

基本の構文

=IMAGE("画像のURL")

数式の入力例

=IMAGE("https://example.com/sample.png")

挿入された画像は、初期設定ではセルの大きさに合わせて比率を保ったまま収まります。

セル内における画像の表示仕様

セルの縦横比に応じて、上下や左右に余白が生じるか、セルの枠内に自動縮小されて表示されます。

  • セルの比率と一致:余白なくフィット
  • セルの幅が狭い:左右が接し、上下に余白が発生
  • セルの幅が広い:上下が接し、左右に余白が発生

縦横比がセルの縦横サイズと一致している場合、余白なく枠内に収まります。

縦横比がセルのサイズと一致し、余白なく枠内に画像が収まっている状態を示しています。

セルの幅を縮めると、左右の幅に合わせて縮小され、上下に余白が生じます。

セルの幅を縮めた際に、左右の幅に合わせて画像が縮小され上下に余白が生じる様子を示しています。

セルの幅を広げると、上下の高さに合わせて拡大され、左右に余白が生じます。

セルの幅を広げた際に、上下の高さに合わせて画像が拡大され左右に余白が生じる様子を示しています。

Googleドライブの画像はメニューから挿入する

Google公式のIMAGE関数の仕様では、drive.google.comでホストされたURLは対象外です。

共有リンクをuc形式へ置き換える旧手順は使わず、「挿入」→「画像」→「セル内に画像を挿入」からGoogleドライブ上のファイルを選択してください。

画像の一覧が表示されない場合は、ファイルへアクセスできるGoogleアカウントで開いているか確認します。

IMAGE関数を使うためだけに、非公開画像を一般公開へ変更する必要はありません。

IMAGE関数を利用する際の注意点と制限

IMAGE() 関数は、誰でもアクセス可能な公開URLにしか対応していません。

  • ログインが必要なWebサイトや社内ツールの画像:表示不可
  • Google Workspaceでドメイン内限定共有に設定された画像:表示不可
  • 非公開設定の画像:表示不可

そのため、認証なしで外部から参照できる画像のみ表示可能となります。

セキュリティ上の留意事項

  • 社外秘や機密情報を含む画像を外部公開設定にすると、URLを知る第三者に閲覧される恐れがあります。
  • 機密扱いの画像には IMAGE() の利用を避けてください。

画像一覧を別の形で表示したい場合

GASで画像一覧を表示する方法は次の記事で扱っています。

スプレッドシートの「ウェブに公開」は閲覧範囲を広げる操作であり、非公開のアクセス制限を維持する方法ではありません。

非公開のDrive画像をセル上に並べるGAS

複数の画像を一覧にしたい場合は、実行者が読み取れるDriveファイルをBlobとして取得し、Sheet.insertImageで配置できます。

この方法は「セル上」の画像です。

セル内画像とは異なり、一覧を並べ替える用途には向きません。

セル内へ入れたい場合は、前述のメニューを使ってください。

以下はPNG・JPEG・GIFを最大50件、新しいシートへ並べる例です。

元の画像の共有設定は変更しませんが、コピーした画像は出力先スプレッドシートの閲覧者から見えるため、出力先の共有範囲を先に確認してください。

スプレッドシートの「拡張機能」→「Apps Script」でコードを貼り付け、FOLDER_IDを対象フォルダのIDに変更して実行します。

既存シートの消去は行いません。

function importDriveImagesToNewSheet() {
  const FOLDER_ID = '対象フォルダID';
  const MAX_IMAGES = 50;
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const files = DriveApp.getFolderById(FOLDER_ID).getFiles();
  // 既存シートを消去せず、新しいシートを作ります。
  const sheet = ss.insertSheet('画像一覧_' + Date.now());
  sheet.getRange(1, 1, 1, 3).setValues([['ファイル名', '元ファイル', '画像(セル上)']]);
  sheet.setColumnWidth(3, 160);
  let count = 0;
  while (files.hasNext() && count < MAX_IMAGES) {
    const file = files.next();
    if (!['image/png', 'image/jpeg', 'image/gif'].includes(file.getMimeType())) continue;
    const row = ++count + 1;
    sheet.getRange(row, 1).setValue("'" + file.getName());
    sheet.getRange(row, 2).setValue(file.getUrl());
    sheet.setRowHeight(row, 110);
    try {
      const blob = file.getBlob();
      if (blob.getBytes().length > 2 * 1024 * 1024) throw new Error('2MBを超えています');
      const image = sheet.insertImage(blob, 3, row);
      const scale = Math.min(140 / image.getWidth(), 100 / image.getHeight(), 1);
      image.setWidth(Math.max(1, Math.round(image.getWidth() * scale)));
      image.setHeight(Math.max(1, Math.round(image.getHeight() * scale)));
      image.setAltTextTitle(file.getName());
    } catch (error) {
      sheet.getRange(row, 3).setValue('挿入できません: ' + error.message);
    }
  }
}

Blobを使う画像挿入には2MBの上限があります。

挿入できないファイルはC列へ理由を記録します。

Driveから返る順序で処理するため、ファイル名順ではありません。

再実行すると別のシートが作成されます。

まず少数の画像が入ったフォルダで確認してください。

本稿の更新時にはローカルで制御処理を検証しており、実際のGASでの画像挿入試験は行っていません。

スプレッドシートの関数を使った記事は、ほかにもあります。

まとめ

  • 手元の画像ファイルを少数挿入する場合は「挿入」>「画像」>「セル内に画像を挿入」
  • 「セル上に画像を挿入」はシートの上に浮遊している状態のため、並べ替え時にセルに追従しません
  • 画像を入れたセルには文字を同時に入力できないため、列を分けて管理します
  • URL一覧から一括で表示する場合は =IMAGE()
  • IMAGE関数には認証不要の対応画像URLを使います。DriveのURLとSVGは公式の対応対象外です

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

スプレッドシート・GASのおすすめ書籍

作業環境の作り方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次