GASでQRコードを自動生成する方法

「QRコードを大量に作りたいけど、1つずつ手作業で生成するのは時間がかかる…」と感じていませんか?Google Apps Script(GAS)とGoogle Charts APIを組み合わせれば、スプレッドシートのURLリストからQRコードを自動で一括生成し、Googleドライブへの保存まで完全自動化できます。

この記事では、プログラミング未経験者でもコピペで動かせるコードを使って、QRコード自動生成の仕組みをゼロから構築する方法を解説します。名刺・チラシ・社内資料など、QRコードが必要なあらゆる場面で活用できます。

この記事でできること

  • スプレッドシートのURLリストからQRコードを一括自動生成
  • 生成したQRコード画像をGoogleドライブに自動保存
  • スプレッドシートのセルにQRコード画像のURLを自動記録
  • ボタン1つでQRコードを生成するカスタムメニューの作成

事前準備(5分)

以下のものを準備してください。特別なツールや有料サービスへの登録は不要です。

  • Googleアカウント(無料)
  • Googleスプレッドシート:QRコードにしたいURLを入力するシート
  • Googleドライブ:QRコード画像の保存先として自動的に使用されます

Google Charts APIはGoogleが提供する無料のAPI(追加設定不要)で、URLをパラメータに渡すだけでQRコード画像を返してくれます。

STEP 1:スプレッドシートを準備する

まず、QRコードにしたいURLのリストをスプレッドシートに璨意します。

Googleスプレッドシートを新規作成し、以下のように入力してください。シート名は「QRリスト」に設定しておきましょう(後のコードと対応します)。

  • A列(ラベル):QRコードの用途・名称(例:会社HP、採用ページ、商品詳細)
  • B列(URL):QRコードにしたいURL(例:https://example.com/product)
  • C列(ドライブURL):自動生成後にQRコードのドライブURLが記録されます(空白のままでOK)

1行目はヘッダー行として「ラベル」「URL」「QRコードURL」と入力し、2行目以降に実際のデータを入力します。

STEP 2:GASスクリプトを作成する

スプレッドシートのメニューから「拡張機能」→「Apps Script」を開き、以下のコードをエディタに貼り付けてください。既存のコードは削除してから貼り付けます。

function generateQRCodes() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('QRリスト');
  const lastRow = sheet.getLastRow();

  if (lastRow < 2) {
    SpreadsheetApp.getUi().alert('データが入力されていません。B列にURLを入力してください。');
    return;
  }

  // Googleドライブにフォルダを作成(初回のみ)
  let folder;
  const folders = DriveApp.getFoldersByName('QRコード自動生成');
  if (folders.hasNext()) {
    folder = folders.next();
  } else {
    folder = DriveApp.createFolder('QRコード自動生成');
  }

  let successCount = 0;

  // ヘッダー行をスキップして2行目から処理
  for (let i = 2; i <= lastRow; i++) {
    const label = sheet.getRange(i, 1).getValue(); // A列:ラベル
    const url = sheet.getRange(i, 2).getValue();   // B列:URL

    if (!url) continue; // URLが空の場合はスキップ

    try {
      // Google Charts APIでQRコード画像を取得
      const qrApiUrl = 'https://chart.googleapis.com/chart'
        + '?chs=300x300'
        + '&cht=qr'
        + '&chl=' + encodeURIComponent(url)
        + '&choe=UTF-8';

      const response = UrlFetchApp.fetch(qrApiUrl);
      const imageBlob = response.getBlob().setName('qr_' + label + '_' + i + '.png');

      // Googleドライブに保存
      const file = folder.createFile(imageBlob);

      // ファイルを全員が閲覧できるように設定
      file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);

      // C列にドライブURLを記録
      sheet.getRange(i, 3).setValue(file.getUrl());

      successCount++;
      Logger.log('生成完了: ' + label + ' / ' + url);

      // API制限対策:0.5秒待機
      Utilities.sleep(500);

    } catch (e) {
      Logger.log('エラー(行' + i + '): ' + e.message);
      sheet.getRange(i, 3).setValue('エラー: ' + e.message);
    }
  }

  SpreadsheetApp.getUi().alert(successCount + '件のQRコードを生成しました!\nドライブの「QRコード自動生成」フォルダをご確認ください。');
}

コードを貼り付けたら、画面上部の「保存」ボタン(フロッピーディスクアイコン)をクリックして保存します。

STEP 3:カスタムメニューを追加する

毎回Apps Scriptを開かずにスプレッドシートから直接QRコードを生成できるよう、カスタムメニューを追加します。以下のコードを先ほどのコードの下に追記してください。

// スプレッドシートを開いたときにカスタムメニューを追加
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('QRコード生成')
    .addItem('QRコードを生成する', 'generateQRCodes')
    .addItem('使い方を確認', 'showHelp')
    .addToUi();
}

// 使い方ガイドを表示
function showHelp() {
  const message =
    '【使い方】\n' +
    '1. A列にラベル(名称)を入力\n' +
    '2. B列にQRコードにしたいURLを入力\n' +
    '3. メニュー「QRコード生成」→「QRコードを生成する」をクリック\n' +
    '4. C列にQRコードのドライブURLが自動記録されます\n\n' +
    '生成されたQRコードはドライブの\n' +
    '「QRコード自動生成」フォルダに保存されます。';
  SpreadsheetApp.getUi().alert(message);
}

2つの関数を保存したら、スプレッドシートをリロードしてください。上部のメニューバーに「QRコード生成」という項目が追加されます。

STEP 4:動作確認

実際にQRコードを生成してみましょう。スプレッドシートのA列にラベル、B列にURLを入力し、メニューから「QRコード生成」→「QRコードを生成する」をクリックします。

初回実行時はGoogleからアクセス権限の確認ダイアログが表示されます。「権限を確認」→Googleアカウントを選択→「許可」をクリックして進んでください。

トラブルシュートチェックリスト

  • 「シートが見つかりません」エラー:スプレッドシートのシート名が「QRリスト」になっているか確認してください。スクリプト内の'QRリスト'の部分を実際のシート名に変更するか、シート名を「QRリスト」に統一します。
  • 「Error: 429」や「リクエストが多すぎます」:Google Charts APIのレート制限に達しました。Utilities.sleep(500)の数値を1000〜2000に増やして再実行してください。
  • QRコードが読み取れない:B列のURLが正しい形式か確認してください。「https://」から始まる完全なURLを入力する必要があります。スペースや全角文字が混入していないかも確認しましょう。

応用:さらに便利にする拡張アイデア

  • QRコードのサイズを変更する:`?chs=300x300` の数値を変更することでサイズを調整できます。名刺用なら100x100、ポスター用なら500x500など、用途に合わせて変えましょう。
  • 時間トリガーで定期更新:商品ページやキャンペーンURLのQRコードを毎週月曜日に自動再生成するよう、Apps Scriptのトリガー設定で定期実行できます。
  • QRコードをGoogleスライドに自動挿入:生成したQRコード画像をGoogleスライドのプレゼン資料に自動で貼り付けることも可能。SlidesApp.insertImage()を使って展開できます。

まとめ

GASとGoogle Charts APIを組み合わせることで、QRコードの一括自動生成が無料・手軽に実現できます。手作業での生成にかかる時間を大幅に短縮し、URLの変更があっても一括で再生成できるのが大きなメリットです。

  • Google Charts APIはGoogleアカウントがあれば無料で使用可能・API登録不要
  • スプレッドシートのURLリストから数十件のQRコードも数分で自動生成できる
  • 生成したQRコードはGoogleドライブに自動保存され、リンクで管理できる
  • カスタムメニューを設定すればApps Script不要でボタン1つで実行できる

QRコード生成の自動化以外にも、GASを使ったさまざまな業務効率化について無料でご相談いただけます。お気軽にお問い合わせください。

お問い合わせはこちら

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA