質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

2393閲覧

createPdfでGoogle SlidesをPDF化して保存したい。

YutoTakeda

総合スコア3

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/11/10 02:34

編集2021/11/10 02:38

前提・実現したいこと

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ビット)です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

修正しました

//作成したGoogle SlidesのURLを開く

の前に

presentation.saveAndClose();

を入れてみてください。

https://developers.google.com/apps-script/reference/slides/presentation#saveAndClose()

投稿2021/11/10 04:31

編集2021/11/11 00:38
sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YutoTakeda

2021/11/10 07:47

回答ありがとうございます。やってみたのですが、、、結果変わらずでした。 Slides自体にはグラフが挿入されているのですが、PDFにした途端に空白で1ページのみになってしまいます。
sawa

2021/11/11 00:39

ごめんなさいメソッド間違ってました修正したのでお試しを
YutoTakeda

2021/11/11 06:41

修正後のメソッドを入れたらグラフ付きのSlidesがPDF化できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問