
自動化博士
今日はQRコードをGoogle Apps Scriptで生成する方法を紹介するぞい。
Google Chart Toolを使った生成
GAS単体では生成できないため、APIを使用する。使用するのはGoogle Chart Toolであるhttps://developers.google.com/chart
基礎:QRコードを取得するコード
GASにおけQRコードの生成は次のようなコードで実装できる。コードの基本的な部分はこれだけである。
//QRコードを生成する関数
function generateQR(data) {
//Google Chart ToolにGETリクエスト
let url = 'https://chart.googleapis.com/chart?chs=100x100&cht=qr&chl=' + data;
let option = {
method: "get",
muteHttpExceptions: true
};
let result = UrlFetchApp.fetch(url, option);
//返り値の定義
return result;
}
応用:画像を任意のフォルダに保存する
先ほどの関数で取得した画像をフォルダに保存する場合には次のようなコードになる。
//QRコードを生成する関数
function generateQR(data) {
//Google Chart ToolにGETリクエスト
let url = 'https://chart.googleapis.com/chart?chs=100x100&cht=qr&chl=' + data;
let option = {
method: "get",
muteHttpExceptions: true
};
let result = UrlFetchApp.fetch(url, option);
//返り値の定義
return result;
}
//ファイルをセーブする関数
function generateImageFile(url){
//関数を呼び出し変数blobに格納
let blob = generateQR(url)
//フォルダーIDを指定 ******は任意のIDを指定してください
let folder = DriveApp.getFolderById(******);
//保存を実行
folder.createFile(blob).setName('*****.png')
}
自動化博士
案外簡単じゃったじゃろ?
質問があればコメント欄に書き込むのじゃ。
参考サイト:
ひまなひと「Google Apps ScriptでQRコードを生成してみる」
https://note.com/himajin_no_asobi/n/n51de21bf73e5
追記
Google Charts APIが使用できなくなったため、新たなコードを作成しました。
function generateQRCodeFromSheet(data) {
const baseUrl = 'https://api.qrserver.com/v1/create-qr-code/';
const qrCodeUrl = `${baseUrl}?data=${encodeURIComponent(data)}`;
// 画像のURLをスプレッドシートに表示する
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const cell = sheet.getActiveCell(); // 現在選択中のセルにQRコードを表示
cell.setFormula(`=IMAGE("${qrCodeUrl}")`);
}
若干ことなる部分もありますが、基本的に使えると思います。
↑のコードだとマージンがないので、QRコードに余白を追加したい場合は以下を使ってください。
function generateQRCodeFromSheet(data) {
const baseUrl = 'https://api.qrserver.com/v1/create-qr-code/';
const qrCodeUrl = `${baseUrl}?data=${encodeURIComponent(data)}&margin=10`;
// 画像のURLをスプレッドシートに表示する
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const cell = sheet.getActiveCell(); // 現在選択中のセルにQRコードを表示
cell.setFormula(`=IMAGE("${qrCodeUrl}")`);
}
↑のサイトのAPIです。
ではでは!