前提・実現したいこと
Spreadsheetのデータからグラフを作成し、そのグラフをSlidesに貼り付けた後にPDF化して保存するという機能を実現したいです。
グラフの作成、Slidesへの挿入はできたのですが、SlidesのPDF化とDriveへの保存がうまくいきません。
具体的に言えば、PDF化はできるのですが、何も書かれていない 1KBのPDFファイルが出力されるだけでSlidesの中身がPDFに反映されません。
どうすればグラフが挿入された状態のSlidesをPDFとして出力することができるでしょうか?
独学でGASを始めたばかりなのでご教示いただけると大変助かります。
ちなみに、訳合ってSlidesは3枚にしており、2スライド目にグラフが挿入される仕様です。
エラーメッセージ
該当のソースコード
javascript
1 2function renderChart() { 3const ss = SpreadsheetApp.getActiveSpreadsheet() 4const sheet = SpreadsheetApp.getActiveSheet() 5 6//Chartの作成 7const chart = sheet.newChart() 8.setPosition(15, 1, 0, 0) 9.addRange(sheet.getRange("A2:C10")) 10.setChartType(Charts.ChartType.BAR) 11.setNumHeaders(1) 12.setOption('width',800) 13.setOption('height',500) 14.setOption('title','xxx') 15.build(); 16 17sheet.insertChart(chart); 18 19//Google Slidesを生成し、2回Append.2枚目のスライドを取得 20const presentation = SlidesApp.create('test') 21presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK) 22presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK) 23const slide2 = presentation.getSlides()[1] 24 25// 2枚目のスライドにchartを挿入 26slide2.insertSheetsChart(chart,0,0,700,400); 27 28//作成したGoogle SlidesのURLを開く 29const url = presentation.getUrl() 30openURL(url) 31 32//PDF化して保存→この処理が何かおかしいのか? 33const id = presentation.getId() 34createPDF(id) 35} 36 37//作成したスライドのURLを開く 38function openURL(url) { 39const script = "<script>window.open('" + url + "', '_blank').focus()</script>"; 40const html = HtmlService.createHtmlOutput(script); 41SpreadsheetApp.getUi().showModalDialog(html, 'Open ' + url); 42} 43 44//PDF化して保存する 45 function createPDF(id) { 46 DriveApp.getFolderById('フォルダID').createFile( 47 DriveApp.getFileById(id).getAs( MimeType.PDF) 48 ) 49 .setName('ファイル名') 50} 51
試したこと
作成したスライドのスクリプトエディタに function createPdf()以下を入力して実行したところ、グラフが挿入された状態のPDFが保存できました。
メソッド自体の問題ではなく、idのとり方が良くないのでしょうか・・・?
補足情報(FW/ツールのバージョンなど)
chorome OSを使用しており、バージョン:94.0.4606.104(64ビット)です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/10 07:47
2021/11/11 00:39
2021/11/11 06:41