GAS × QRコード|簡単な作成方法から読み取りまで一挙紹介

GASでQRコードって使えるのかな?
猫男
猫男
catman
catman
ふふふ、それならGAS+QRコードの出番だ。読み取りも作成もバッチリできるぞ!

GASでQRコードを作成する方法

GAS(Google Apps Script)では、QRコード読み取りAPI(例:goqr.me)を使って、簡単にQRコードを生成できます!

以下のような関数を使えば、スプレッドシート上にQRコードを表示可能です。

 function setQrCodeFormula() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const url = sheet.getRange("A1").getValue();
  const imageUrl = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + encodeURIComponent(url);
  sheet.getRange("B1").setFormula('=IMAGE("' + imageUrl + '")');
}

A1セルにQRコードにしたいURLやテキストを入れるだけで、B1セルに画像としてQRコードが生成されます。

gas qrコード

めっちゃ簡単…!しかも画像で表示できるのがありがたい!
猫男
猫男

GASでQRコードを読み取る方法

GAS単体では画像からQRコードを読み取る機能はありませんが、外部APIを連携させることで実現可能です。

例:「QRコード読み取りAPI(例:goqr.me)」を利用

 function readQrByPost(imageUrl) {
  // ① まず自分で画像を取得
  const blob = UrlFetchApp.fetch(imageUrl).getBlob();

  // ② その画像を QR Server にアップロードして解析
  const res = UrlFetchApp.fetch(
    'https://api.qrserver.com/v1/read-qr-code/',
    {
      method: 'post',
      payload: { file: blob },       // ← パラメータ名は "file"
      muteHttpExceptions: true       // 解析失敗時でもレスポンスを受け取る
    }
  );

  const result = JSON.parse(res.getContentText());
  const symbol = result[0].symbol[0];

  Logger.log(symbol);               // error と data を両方確認
  return symbol.data;               // 成功なら QR の内容、失敗なら null
} 

imageUrl にはGoogle DriveやWeb上の画像のURLを指定します。たとえば、こんな感じ ↓


function sampleRun() {
  const url   = 'https://cacon2.sakura.ne.jp/members/php/assets/imgs/qr_sampleshop.png';
  const data  = decodeQrFromUrl(url);
  Logger.log('QR 内容: ' + data);
}

 

catman
catman
これで読み取りまで自動化できる!イベント受付にも応用できるな。

QRコードで受付管理(GAS+スプレッドシート)

QRコード付きの参加証を発行して、当日受付で読み取り → Google スプレッドシートに記録、という仕組みも作れます。

構成例:

スプレッドシートに参加者一覧を用意

GASで参加者ごとのQRコードを生成(IDなどをエンコード)

LINE BotやGAS Webアプリで読み取り用フォームを用意

読み取った情報をスプレッドシートに記録!

受付も非接触でスムーズにできるって、便利すぎる…!
猫男
猫男

まとめ:GAS×QRコードでできること

  • QRコード作成:Google Chart APIで1行で生成可能
  • QRコード読み取り:外部APIと連携すれば実現可
  • QR受付システム:イベント運営や勤怠管理にも応用できる

 

catman
catman
GASとQRコードのコンビは、紙を使わない未来型受付にもぴったりだ!