【GAS】Google Apps Script - シートから請求書PDFを発行
今回はGASを使って、スプレッドシートの内容をPDF化して、Googleドライブ内にある指定のフォルダに保存する方法をご紹介します!
PDF化するシートの内容
今回はこちらの架空の請求書をPDF化します。
スクリプトの作成
以下の内容にそって、スクリプトを作成し保存します。
/*
* PDFの保存先となるフォルダの指定
*/
let folderId = "ここに保存先となるフォルダIDを入力";
let folder = DriveApp.getFolderById(folderId);
/*
* PDF化する対象のスプレッドシート
*/
let spreadsheetID = "ここに今回PDF化するスプレッドシートのIDを入力";
let spreadsheet = SpreadsheetApp.openById(spreadsheetID);
/*
* スプレッドシート内 対象シート
* 今回は「請求書」の名前がついているシートをPDF化します
*/
let sheetName = "請求書";
let sheet = spreadsheet.getSheetByName(sheetName);
let sheetID = sheet.getSheetId();
function savePdf() {
/*
* ファイル名に使用する顧客名を取得
* 今回のシートではB3セルに顧客名が入っています
*/
let customerName = sheet.getRange("B3").getValue();
Logger.log(customerName);
//実行時の日時
let date = new Date();
//日時のフォーマットを指定
let formattedDate = Utilities.formatDate(date, "JST", "yyyyMMddHHmm");
Logger.log(formattedDate);
//PDF作成用関数を実行してPDF化し、指定フォルダに保存
createPDF( folder, spreadsheetID, sheetID, formattedDate + "_" + customerName );
}
/*
* PDF作成用関数
* folder:保存先フォルダ
* spreadsheetID:PDF化するスプレッドシートID
* sheetID:PDF化するシートID
* filename:PDFの名前
*/
function createPDF( folder, spreadsheetID, sheetID, filename) {
// スプレッドシートをPDFにエクスポートするためのURL。このURLに色々なオプションを付けてPDFを作成
let url = "https://docs.google.com/spreadsheets/d/spreadsheetID/export?".replace("spreadsheetID", spreadsheetID);
// PDF作成のオプションを指定
let opts = {
exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
size: "A4", // 用紙サイズの指定 legal / letter / A4
portrait: "true", // true → 縦向き、false → 横向き
fitw: "true", // 幅を用紙に合わせるか
sheetnames: "false", // シート名をPDF上部に表示するか
printtitle: "false", // スプレッドシート名をPDF上部に表示するか
pagenumbers: "false", // ページ番号の有無
gridlines: "false", // グリッドラインの表示有無
fzr: "false", // 固定行の表示有無
gid: sheetID // シートIDを指定
};
//オプション内容の定義用
let urlExt = [];
// 上記のoptsのオプション名と値を「=」で繋げて配列urlExtに格納
for( optName in opts ){
urlExt.push( optName + "=" + opts[optName] );
}
// urlExtの各要素を「&」で繋げる
let options = urlExt.join("&");
// API使用のためのOAuth認証
let token = ScriptApp.getOAuthToken();
// PDF作成
let response = UrlFetchApp.fetch(url + options, {
headers: {
'Authorization': 'Bearer ' + token
}, muteHttpExceptions: true
});
let blob = response.getBlob().setName(filename + '.pdf');
// PDFを指定したフォルダに保存
folder.createFile(blob);
}
// スプレッドシートのメニューからPDF作成用の関数を実行出来るように、「GAS実行」メニューを追加。
//トリガーにより起動時に動作
function onOpen() {
//メニュー追加
let entries = [
{
name : "PDF作成",
functionName : "savePdf"
}
];
spreadsheet.addMenu("GAS実行", entries);
};
関数 savePdfを実行することで、PDF化と指定フォルダへの保存ができます。
また、関数 onOpenに対して起動時に実行するようトリガーを設定することで、スプレッドシートのメニューバーからGASを実行することができます。
GASを実行
メニューバーから「PDF作成」をクリックし、GASを実行します。保存先に指定したフォルダを確認すると、PDF化されたシートがちゃんと保存されていれば完了です!
この記事が気に入ったらサポートをしてみませんか?