0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASでQRコードを表示させる方法を紹介

Last updated at Posted at 2025-11-03

記事の概要

・GASでリンクを指定したら、QRコードを取得する

はじめに

GASでQRコード・バーコードを表示させる方法を紹介します。
GASでとりあえず何かを作成したいなと思った時に、パッと思い浮かんだものがQRコードやバーコードの自動生成でした。
>>>私が運営するブログはこちら。メインは技術ブログですが、副業やポイ活についても紹介!

作成するQRコードの動作

下記のようなQRコード自動作成を実装します。
スクリーンショット 2025-11-03 22.12.38.png
A7やA8に事前にURL入力していたら、QRコード生成ボタンを押下→D列にQRコードを自動で生成する動作となります。

GASでQRコードを自動作成する準備

QRコード生成のボタン作成、スクリプトの作成、ボタンにスクリプトを反映させるところまで説明します。
①QRコードボタンの作成
図形描画を選択する
スクリーンショット 2025-11-03 22.25.12.png
任意の図形を選択する
スクリーンショット 2025-11-03 22.25.53.png
ボタンを作成する
スクリーンショット 2025-11-03 22.26.33.png

②スクリプトの作成
下記のように、拡張機能>Apps Scriptを押下する
スクリーンショット 2025-11-03 22.16.49.png
③+ボタンからスクリプトを選択して、ファイルを作成する(qr.gsというファイルを作成しました。)
スクリーンショット 2025-11-03 22.23.10.png
④作成したファイルにスクリプトを記載する
⑤ボタンにスクリプトを反映させる
図形を右クリックすると図形の右上に三つの点があるので、それを選択するとスクリプトを割り当てとあるのでクリック
スクリーンショット 2025-11-03 22.27.36.png
⑥作成したスクリプトの関数名を記載する
function generateQrCodes() {
...(省略)
}
となっているので、functionの後に書いてあるgenerateQrCodesをスクリプトを割り当てに記載する。
スクリーンショット 2025-11-03 22.28.38.png
あとはボタンを押すだけで、実行されます。

GASのQRコードのスクリプト

下記のスクリプトは自分で一からコードを書いたのではなく、Geminiを活用してコードを書いています。

/**
 * A列の指定された範囲のURLを読み込み、対応するD列にQRコードを出力をします。
 * 例:A7のURLをD7に、A8のURLをD8にQRコードとして表示します。
 */
function generateQrCodes() {
  // ① アクティブなスプレッドシートのシートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // ② 処理する範囲を設定 (例: A7からAの最終行まで)
  // ここではA7から始めると仮定します。
  const startRow = 7; 
  
  // データの存在する最終行を取得
  const lastRow = sheet.getLastRow();

  // 範囲をチェック (最終行が開始行より小さい場合は処理を終了)
  if (lastRow < startRow) {
    Logger.log("A列に処理すべきURLが見つかりませんでした (A7行目以降)。");
    return;
  }
  
  // ③ 指定された範囲 (A7からAの最終行) のURLを一括で取得
  // getRange(行, 列, 行数, 列数)
  // 列のインデックス: A=1, D=4
  const urlRange = sheet.getRange(startRow, 1, lastRow - startRow + 1, 1);
  const urls = urlRange.getValues();
  
  // QRコードのIMAGE関数を格納する二次元配列
  const qrFormulas = [];

  // ④ 取得したURL配列をループし、QRコードのIMAGE関数を生成
  urls.forEach(row => {
    const url = row[0]; // 二次元配列なので[0]でURLを取得
    
    if (url && url.toString().startsWith('http')) {
      // URLをエンコード
      const encodedUrl = encodeURIComponent(url.toString());
      
      // QRコードAPIのURLを組み立て
      // size=150x150は元の関数と同じ
      const imageUrl = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + encodedUrl;
      
      // IMAGE関数を生成
      const formula = '=IMAGE("' + imageUrl + '")';
      qrFormulas.push([formula]);
    } else {
      // URLがない、または有効なURLでない場合は空のセルを設定
      qrFormulas.push([""]); 
    }
  });

  // ⑤ D列の対応する範囲にIMAGE関数を一括で書き込み
  // D列 (列インデックス 4) に書き込みます
  const targetRange = sheet.getRange(startRow, 4, qrFormulas.length, 1); 
  targetRange.setFormulas(qrFormulas);
  
  Logger.log("A%s から D%s までQRコードの生成を完了しました。", startRow, lastRow);
}

これでQRコード生成ボタンを押すと、QRコードを自動で生成するようになります。
QRコード生成ボタンを押すと、QRコードを自動生成します。
今回は、私が運営しているブログのURLをA7セルに記載して、QRコード生成を押すと、下記のようにD7セルにQRコードが生成されます。
スクリーンショット 2025-11-03 23.28.25.png

もし、カスタマイズしたいのであれば、Geminiにこのままコードを貼り付けていただいて、Geminiに指示をしてあげるとコードをカスタマイズできます。

まとめ

QRコードを自動生成するGASをGeminiを使って生成してみました。
もしQRコードの生成ができれば、例えばQRコードを読み込んで受付サービスを作成できるでしょう。
例えば、Geminiに下記のように聞いてみたところ、いくつかアイデアをくれました。
(質問)

QRコードを使ったサービスのアイデアを3個箇条書きで一行で書いてください。

(回答)

デジタル・プロフィール連携サービス: イベントやビジネスでQRコードをスキャンするだけで、連絡先やSNSを一括交換・自動保存。
個別最適化された教材アクセス: 教科書のQRコードから、生徒の進捗に合わせた補足動画や演習問題に直接リンク。
スマート農産物トレーサビリティ: 野菜や果物のQRコードを読み取り、生産者の情報、収穫日、農薬使用履歴を確認。

GASを使って、さまざまなアイデアの実現も可能なため、これからもGASを用いて業務効率化やサービス開発をしていきたいと思います。

>>>私が運営するブログはこちら。メインは技術ブログですが、副業やポイ活についても紹介!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?