プルダウンで名前を選択すると、
選択した名前から情報を検索し、自動で請求書を作成する(vlookupなどを使用し、名前で検索する)システムを作りました。
しかし、100名以上の書類を作る場合、ひとりひとりを選択して印刷するのはとても手間です。
こう言った場合、普通どんなシステムを組むのでしょうか??
やりたいのは、全顧客の必要情報をまとめたスプレッドシートのデータを使って個人書類を作成し、簡単に全顧客分のPDFを作成することです。
良い提案があればご教示ください。
コード1
function
1 //PDFの保存先 2 //★★★フォルダーIDを入力してください★★★ 3 let folderId = "**************"; 4 5 //アクティブなスプレッドシートを取得する 6 let ss = SpreadsheetApp.getActiveSpreadsheet(); 7 8 //スプレッドシートIDを取得する 9 let ssId = ss.getId(); 10 11 //シートIDを取得する 12 let shId = ss.getActiveSheet().getSheetId(); 13 14 //D4セルを取得する 15 let fileNum = ss.getActiveSheet().getRange("D4").getValue(); 16 17 //★★★PDFのファイル名を入力してください★★★ 18 //※ポイント: ファイル名が重複しないようにしましょう 19 let fileName = fileNum; 20 21 //関数createPdfを実行し、PDFを作成して保存する 22 createPdf(folderId, ssId, shId, fileName); 23} 24 25//PDFを作成し指定したフォルダーに保存する関数 26//以下4つの引数を指定する必要がある 27//1: フォルダーID (folderId) 28//2: スプレッドシートID (ssId) 29//3: シートID (shId) 30//4: ファイル名 (fileName) 31function createPdf(folderId, ssId, shId, fileName){ 32 //PDFを作成するためのベースとなるURL 33 let baseUrl = "https://docs.google.com/spreadsheets/d/" 34 + ssId 35 + "/export?gid=" 36 + shId; 37 38 //★★★自由にカスタマイズしてください★★★ 39 //PDFのオプションを指定 40 let pdfOptions = "&exportFormat=pdf&format=pdf" 41 + "&size=A4" //用紙サイズ (A4) 42 + "&portrait=false" //用紙の向き true: 縦向き / false: 横向き 43 + "&fitw=true" //ページ幅を用紙にフィットさせるか true: フィットさせる / false: 原寸大 44 + "&top_margin=0.50" //上の余白 45 + "&right_margin=0.50" //右の余白 46 + "&bottom_margin=0.50" //下の余白 47 + "&left_margin=0.50" //左の余白 48 + "&horizontal_alignment=CENTER" //水平方向の位置 49 + "&vertical_alignment=TOP" //垂直方向の位置 50 + "&printtitle=false" //スプレッドシート名の表示有無 51 + "&sheetnames=false" //シート名の表示有無 52 + "&gridlines=false" //グリッドラインの表示有無 53 + "&fzr=false" //固定行の表示有無 54 + "&fzc=false" //固定列の表示有無; 55 56 //PDFを作成するためのURL 57 let url = baseUrl + pdfOptions; 58 59 //アクセストークンを取得する 60 let token = ScriptApp.getOAuthToken(); 61 62 //headersにアクセストークンを格納する 63 let options = { 64 headers: { 65 'Authorization': 'Bearer ' + token 66 } 67 }; 68 69 //PDFを作成する 70 let blob = UrlFetchApp.fetch(url, options).getBlob().setName(fileName + '.pdf'); 71 72 //PDFの保存先フォルダー 73 //フォルダーIDは引数のfolderIdを使用します 74 let folder = DriveApp.getFolderById(folderId); 75 76 //PDFを指定したフォルダに保存する 77 folder.createFile(blob); 78} 79
コード2
function
1 let ui = SpreadsheetApp.getUi() 2 3 //メニュー名を決定 4 //★★★メニュー名は好きなものに置き換えてください★★★ 5 let menu = ui.createMenu("GAS実行"); 6 7 //メニューに実行ボタン名と関数を割り当て 8 //★★★実行ボタン名は好きなものに置き換えてください★★★ 9 menu.addItem("PDF作成","savePdf"); 10 11 //スプレッドシートに反映 12 menu.addToUi(); 13} 14

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/31 14:20
2022/05/31 14:25
退会済みユーザー
2022/05/31 14:58 編集
2022/05/31 15:32
退会済みユーザー
2022/06/02 08:38
2022/06/02 16:41
2022/06/02 17:05