前提・実現したいこと
Googleフォームで作業報告書を作成しました。
Spreadsheetと連携させて、GASを用い、月初にトリガーで前月分の作業精算を行う予定です。
主な作業想定の流れ
・ユーザーは都度報告をGoogleフォームで行う
・月初になるとgasが作業項目ごとに集計を行い、前月の名前のシートを作成して入力
・pdf化⇒管理者&ユーザーにメール
発生している問題・エラーメッセージ
シートは予定通り完成しました。
pdfも生成できメールも送られてきています。
しかしなぜかpdfが白紙です。
シートを挿入するところをコメントアウトにしてpdfにすると、それはそのままpdf化されていました。
どなたかアドバイスいただけると嬉しいです
該当のソースコード
GAS
1function syukeiWorkList() { 2 3 var ID = '1WQeUkNpAvtvijjNXvLN-pOv6DgsicWFh4LIZBKwx47w'; 4 var sheets = SpreadsheetApp.openById(ID).getSheets(); 5 var mastersheet = sheets[0];//マスターシート料金表 6 var sheet = sheets[1];//フォームシート 7 var syukeimaster = sheets[2]; //集計の書式マスター 8 9 //マスターシートの作業項目数を数える 10 11割愛 12 13 var ss = year +month; 14 // シート挿入 15 16 var sheet = SpreadsheetApp.openById(ID); 17 var index = sheet.getNumSheets() ; 18 sheet.insertSheet(ss,index); 19 var syukeisheet = sheet.getSheetByName(ss).activate();//挿入したシート 20 21 22別のマスターシートの中身をコピーしている中身・割愛 23 24 25 //PDF化 26 syukeisheet.activate(); 27 var ssid = ID; 28 var GID = syukeisheet.getSheetId(); 29 // マイドライブ直下に保存したい場合は以下 30 var root= DriveApp.getRootFolder(); 31 var folderid = root.getId(); 32 33 // ファイル名に使用する名前を取得 34 var filename = year + "年" + month + "月オンラインショップ作業報告書"; 35 36 37 var folder = DriveApp.getFolderById(folderid); 38 39 // スプレッドシートをPDFにエクスポートするためのURL。このURLに色々なオプションを付けてPDFを作成 40 var url = "https://docs.google.com/spreadsheets/d/SSID/export?".replace("SSID", ssid); 41 42 // PDF作成のオプションを指定 43 var opts = { 44 exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx 45 format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx 46 size: "A4", // 用紙サイズの指定 legal / letter / A4 47 portrait: "true", // true → 縦向き、false → 横向き 48 fitw: "true", // 幅を用紙に合わせるか 49 sheetnames: "false", // シート名をPDF上部に表示するか 50 printtitle: "false", // スプレッドシート名をPDF上部に表示するか 51 pagenumbers: "false", // ページ番号の有無 52 gridlines: "false", // グリッドラインの表示有無 53 fzr: "false", // 固定行の表示有無 54 gid: GID // シートIDを指定 sheetidは引数で取得 55 }; 56 57 var url_ext = []; 58 59 // 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納 60 for( optName in opts ){ 61 url_ext.push( optName + "=" + opts[optName] ); 62 } 63 64 // url_extの各要素を「&」で繋げる 65 var options = url_ext.join("&"); 66 67 // API使用のためのOAuth認証 68 var token = ScriptApp.getOAuthToken(); 69 70 // PDF作成 71 var response = UrlFetchApp.fetch(url + options, { 72 headers: { 73 'Authorization': 'Bearer ' + token 74 } 75 }); 76 77 78 var blob = response.getBlob().setName(filename + '.pdf'); 79 80 // PDFを指定したフォルダに保存 81 folder.createFile(blob); 82 var mail_to = "メールアドレス等"; 83 var subject = filename; 84 var body = "前月分の作業分が確定しました。ご確認お願いします。\n記録フォームはこちら:https://docs.google.com/forms/d/1T9F7rkL3cpPBXzr0e9dCrBktL4d5zDS7jNzAX9RcWoc/edit"; 85 86 GmailApp.sendEmail(mail_to, subject, body, {attachments: blob}); 87 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/18 01:16 編集
2018/10/18 03:13