実現したいこと
基本的な質問で恐縮ですが、お力をお借りできれば嬉しいです。。
ある特定の可変最終行から下の空白行(今回の例では10から200行まで)を非表示にして、PDFとしてGoogleDriveのフォルダに保存したいと考えています。
発生している問題・エラーメッセージ
hideRowsで一部行を非表示に設定しているにも関わらず、非表示にならずにそのままPDF化されてしまいます。
該当のソースコード
GAS
1function sendmail(){ 2//スプレッドシートは全体公開済 3var ssurl ="https://docs.google.com/spreadsheets/d/19RgDljf6rcNwd9GGvTawQMI3FHLMlVlmVJrwemoy_-g/edit#gid=0"; 4 var sh = SpreadsheetApp.openByUrl(ssurl); 5 var sheet = sh.getSheetByName("TEST"); 6 var today = sheet.getRange("B2").getValue(); 7 var today = Utilities.formatDate(new Date(today), 'JST', "yyyy/MM/dd"); 8 var lastRow = sheet.getRange("B5").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); 9 var name = sheet.getRange("F2").getValue(); 10 11 console.log(lastRow) 12 13 sheet.hideRows(lastRow+1,200-lastRow); 14 15 exportSheetToPDF(sh,name,today); 16 17 sheet.showRows(lastRow+1,200-lastRow); 18 19} 20 21 22 23function exportSheetToPDF(sh,name,today){ 24 25 // PDF出力するシートを指定 26 const ssId = "19RgDljf6rcNwd9GGvTawQMI3FHLMlVlmVJrwemoy_-g"; 27 const sheetId = sh.getSheetByName("TEST").getSheetId(); 28 29 30 31 // スプレッドシートをPDF出力するためのURL 32 const url = 'https://docs.google.com/spreadsheets/d/' + ssId + '/export?' 33 34 // PDF出力のオプションを設定 35 36 const options = 'exportFormat=pdf&format=pdf' 37 + '&gid=' + sheetId //PDFにするシートの「シートID」 38 + '&portrait=true' //true(縦) or false(横) 39 + '&size=A4' //印刷サイズ 40 + '&fitw=true' //true(幅を用紙に合わせる) or false(原寸大) 41 + '&gridlines=false' //グリッドラインの表示有無 42 + '&range=A1%3AF200' //★POINT★セル範囲を指定 // %3A はコロン(:)を表す 43 + '&top_margin=0.3' //TOPの調整 44 + '&bottom_margin=0.1' //BOTTOMの調整 45 + '&left_margin=0.25' //左側の調整 46 + '&right_margin=0.25' //右側の調整 47 48 49 const requestUrl = url + options ; 50 51 //API使用のためのOAuth認証 52 const token = ScriptApp.getOAuthToken(); 53 54 const params = { 55 'headers' : {'Authorization':'Bearer ' + token}, 56 'muteHttpExceptions' : true 57 }; 58 59 const response = UrlFetchApp.fetch(requestUrl, params); 60 61 //Blobオブジェクトを作成 62 const blob = response.getBlob(); 63 blob.setName( "【テスト】" +today+"_"+ name +'.pdf'); //PDFファイル名を設定 64 65 //指定のフォルダにPDFファイルを作成 66 const folder = DriveApp.getFolderById("任意のフォルダID"); 67 folder.createFile(blob) 68 var staySecond = 2; 69 Utilities.sleep(staySecond * 1000); 70}
試したこと
sheet.hideRows(lastRow+1,200-lastRow);
の直後にスクリプトを強制停止すると、はじめて非表示がスプレッドシートに反映されるようです。
可変最終行から下を非表示にし、PDF化するという数式は以前自分で組んだことがありますが、そちらは問題なく機能しております。
まったく同じとはいかなくとも、似たような式で組んでいるこちらがうまくいかない理由が分からず、困惑しています。
基本的な内容で大変申し訳ありませんが、何卒よろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/29 23:49