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

A7やA8に事前にURL入力していたら、QRコード生成ボタンを押下→D列にQRコードを自動で生成する動作となります。
GASでQRコードを自動作成する準備
QRコード生成のボタン作成、スクリプトの作成、ボタンにスクリプトを反映させるところまで説明します。
①QRコードボタンの作成
図形描画を選択する

任意の図形を選択する

ボタンを作成する

②スクリプトの作成
下記のように、拡張機能>Apps Scriptを押下する

③+ボタンからスクリプトを選択して、ファイルを作成する(qr.gsというファイルを作成しました。)

④作成したファイルにスクリプトを記載する
⑤ボタンにスクリプトを反映させる
図形を右クリックすると図形の右上に三つの点があるので、それを選択するとスクリプトを割り当てとあるのでクリック

⑥作成したスクリプトの関数名を記載する
function generateQrCodes() {
...(省略)
}
となっているので、functionの後に書いてあるgenerateQrCodesをスクリプトを割り当てに記載する。

あとはボタンを押すだけで、実行されます。
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コードが生成されます。

もし、カスタマイズしたいのであれば、Geminiにこのままコードを貼り付けていただいて、Geminiに指示をしてあげるとコードをカスタマイズできます。
まとめ
QRコードを自動生成するGASをGeminiを使って生成してみました。
もしQRコードの生成ができれば、例えばQRコードを読み込んで受付サービスを作成できるでしょう。
例えば、Geminiに下記のように聞いてみたところ、いくつかアイデアをくれました。
(質問)
QRコードを使ったサービスのアイデアを3個箇条書きで一行で書いてください。
(回答)
デジタル・プロフィール連携サービス: イベントやビジネスでQRコードをスキャンするだけで、連絡先やSNSを一括交換・自動保存。
個別最適化された教材アクセス: 教科書のQRコードから、生徒の進捗に合わせた補足動画や演習問題に直接リンク。
スマート農産物トレーサビリティ: 野菜や果物のQRコードを読み取り、生産者の情報、収穫日、農薬使用履歴を確認。
GASを使って、さまざまなアイデアの実現も可能なため、これからもGASを用いて業務効率化やサービス開発をしていきたいと思います。