前提・実現したいこと
GASで自動的にスプレッドシートをPDFに変換して出力するコードを書いているのですが、
エラーが起き、うまく出力できません。
Exception: サービス エラー: ドライブ という初めて見るエラーメッセージが出るのですが、
調べても何の情報もなく、困っています。
どなたかエラーメッセージの意味だけでも教えていただけると幸いです。
発生している問題・エラーメッセージ
Exception: サービス エラー: ドライブ
該当のソースコード
GAS
1function myFunction(){ 2 3 4 5 // PDFの保存先となるフォルダ 6 var root= DriveApp.getRootFolder(); 7 var folderid = root.getId(); 8 9 ///////////////////////////////////////////// 10 // 現在開いているスプレッドシートをPDF化したい場合// 11 //////////////////////////////////////////// 12 // 現在開いているスプレッドシートを取得 13 var ss = SpreadsheetApp.getActiveSpreadsheet(); 14 // 現在開いているスプレッドシートのIDを取得 15 var ssid = ss.getId(); 16 17 18 // 現在開いているスプレッドシートのシートIDを取得 19 var sheetid = ss.getActiveSheet().getSheetId(); 20 // getActiveSheetの後の()を忘れると、TypeError: オブジェクト function getActiveSheet() {/* */} で関数 getSheetId が見つかりません。 21 var sheet_master =ss.getSheetByName('****') 22 var sheet5 = ss.getSheetByName('***') 23 var sheet_masterid = sheet_master.getSheetId(); 24 25 // 開始行、終了行を取得 26 var startRow = sheet5.getRange("J3").getValue(); 27 var endRow = sheet5.getRange("J4").getValue(); 28 29 30 //BOE名入力とPDF出力を繰り返し 31 for (let i=startRow; i<=endRow;i++){ 32 //BOE名をコピーし、指定セルにペースト 33 var paste_BOE =sheet5.getRange(i,2,1,3).copyTo(sheet5.getRange(1,8),{constentsOnly:true}); 34 // ファイル名に使用する名前を取得 35 var customer_name = sheet5.getRange(i,5).getValue(); 36 // PDF作成関数 37 createPDF( folderid, ssid, sheet_masterid, "AES 2020 3Q "+ customer_name); 38 39 40 } 41 //開始行数を変更 42 sheet5.getRange("J3").setValue(sheet5.getRange("J4").getValue()+1) 43} 44 45// PDF作成関数 引数は(folderid:保存先フォルダID, ssid:PDF化するスプレッドシートID, sheetid:PDF化するシートID, filename:PDFの名前) 46function createPDF(folderid, ssid, sheet_masterid, filename){ 47 48 // PDFファイルの保存先となるフォルダをフォルダIDで指定 49 var folder = DriveApp.getFolderById(folderid); 50 51 // スプレッドシートをPDFにエクスポートするためのURL。このURLに色々なオプションを付けてPDFを作成 52 var url = "https://docs.google.com/spreadsheets/d/SSID/export?".replace("SSID", ssid); 53 54 // PDF作成のオプションを指定 55 var opts = { 56 exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx 57 format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx 58 size: "A3", // 用紙サイズの指定 legal / letter / A4 59 portrait: "false", // true → 縦向き、false → 横向き 60 fitw: "true", // 幅を用紙に合わせるか 61 sheetnames: "false", // シート名をPDF上部に表示するか 62 printtitle: "false", // スプレッドシート名をPDF上部に表示するか 63 pagenumbers: "false", // ページ番号の有無 64 gridlines: "false", // グリッドラインの表示有無 65 fzr: "false", // 固定行の表示有無 66 top_margin: "0.25", // 上余白 67 bottom_margin:"0.25", // 下余白 68 left_margin: "0.25", // 左余白 69 right_margin: "0.25", // 右余白 70 gid: sheet_masterid // シートIDを指定 sheetidは引数で取得 71 }; 72 73 var url_ext = []; 74 75 // 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納 76 for( optName in opts ){ 77 url_ext.push( optName + "=" + opts[optName] ); 78 } 79 80 // url_extの各要素を「&」で繋げる 81 var options = url_ext.join("&"); 82 83 // optionsは以下のように作成しても同じです。 84 // var ptions = 'exportFormat=pdf&format=pdf' 85 // + '&size=A4' 86 // + '&portrait=true' 87 // + '&sheetnames=false&printtitle=false' 88 // + '&pagenumbers=false&gridlines=false' 89 // + '&fzr=false' 90 // + '&gid=' + sheetid; 91 92 // API使用のためのOAuth認証 93 var token = ScriptApp.getOAuthToken(); 94 95 // PDF作成 96 var response = UrlFetchApp.fetch(url + options, { 97 headers: { 98 'Authorization': 'Bearer ' + token 99 } 100 }); 101 102 // 103 var blob = response.getBlob().setName(filename + '.pdf'); 104 105 //} 106 107 // PDFを指定したフォルダに保存 108 folder.createFile(blob); 109 110}
試したこと
半年前に同じ作業をしたときは成功したのですが、今回初めて見るエラーコードが出ました。
検索しても何も情報がないので、困っています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。