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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google スライド

Google スライドは、Google社が提供している文書作成ツール。Googleアカウントがあれば利用が可能です。プレゼンテーション用テンプレートフォーマットやフォントなどが多く用意されています。

Google Apps Script

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

PDF

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

Q&A

解決済

1回答

311閲覧

Googleスプレッドから既存のスライドの指定ページをPDF化、保存及びPDFのURLを取得したい。

ri-g-yo

総合スコア3

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google スライド

Google スライドは、Google社が提供している文書作成ツール。Googleアカウントがあれば利用が可能です。プレゼンテーション用テンプレートフォーマットやフォントなどが多く用意されています。

Google Apps Script

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

PDF

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

0グッド

1クリップ

投稿2023/11/04 08:20

実現したいこと

既存のGoogleプレゼンテーション(スライド)情報を、スプレッドのセルに記載したURLから取得しそのスライドの2ページ目以外をPDF化させ、PDFのURLをスプレッドの指定したセルに記載。PDFは指定したフォルダーへ保存させたいです。

前提

スプレッドには、複数のスライドURLが記載されていて、上から下にセル情報を読み込ませたいです。

発生している問題・エラーメッセージ

createPdf が見つからない。というエラーが出ます。
ReferenceError: createPdf is not defined

該当のソースコード

function savePresentationToPdfFromSpreadsheetAndWriteUrlToSpreadsheet() { const sheetName = "シート名"; const saveFolderId = "PDF保存先"; // スプレッドシートを取得する const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // シートを取得する const sheet = spreadsheet.getSheetByName(sheetName); // プレゼンテーションURLを取得する const presentationUrl = spreadsheet.getActiveSheet().getRange("指定セル").getValue(); // プレゼンテーションを取得する const presentation = SlidesApp.openByUrl(presentationUrl); //保存PDFのファイル名取得 const fileName = spreadsheet.getActiveSheet().getRange("指定セル").getValue(); // プレゼンテーションをPDFとして保存する createPdf(fileName, presentation, saveFolderId); // 作成したPDFのURLを取得する const file = DriveApp.getFileById(fileName); const url = file.getUrl(); // 作成したPDFのURLをスプレッドに書き出す sheet.getRange("指定セル").setValue(url); }

試したこと

完全なるど素人です。
色々調べて何度も試しましたが、全く上手くいかずお手上げ状態です。
どなたか、ご教授頂けると助かります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

YAmaGNZ

2023/11/04 09:28

createPdfという関数を作成する必要があるように見えます。 参考にされたところに書いてありませんでしたか?
guest

回答1

0

ベストアンサー

プレゼンテーションからPDFを作成するcreatePDFという関数がない
というエラーになっているので、
その名前で関数を追記する必要があります。

createPdf関数は、ファイル名、プレゼンテーション、保存先のフォルダIDを受け取って
指定のフォルダに保存したPDFファイルのURLを返すようにできるので、

まずは、createPdfを実行する部分を変更します。
そのため、

JavaScript

1 // プレゼンテーションをPDFとして保存する 2 createPdf(fileName, presentation, saveFolderId); 3 4 // 作成したPDFのURLを取得する 5 const file = DriveApp.getFileById(fileName); 6 const url = file.getUrl(); 7 8 // 作成したPDFのURLをスプレッドに書き出す 9 sheet.getRange("指定セル").setValue(url); 10 11}

の部分を

JavaScript

1 // プレゼンテーションをPDFとして保存しURLを取得する 2 const url = createPdf(fileName, presentation, saveFolderId); 3 4 // 作成したPDFのURLをスプレッドに書き出す 5 sheet.getRange("指定セル").setValue(url); 6 7}

に変更した上で、
最後の
}
の次の行に次の関数(createPdf)を書き足してみてください。

JavaScript

1function createPdf(filename, presentation, saveFolderId) { 2 3 // 保存先フォルダを取得 4 const folder = DriveApp.getFolderById(saveFolderId); 5 6 // プレゼンテーションからPDFを作成 7 const pdf = DriveApp.getFileById(presentation.getId()) 8 .getAs(MimeType.PDF); 9 10 // 指定のファイル名で指定のフォルダに保存 11 const file = DriveApp.createFile(pdf) 12 .setName(filename) 13 .moveTo(folder); 14 15 // PDFのURLを返す 16 return file.getUrl(); 17 18}

(追記)
2ページ目を削除する方法について、
力技的な手法ですが、元のファイルのコピーで作業用ファイル作成して
作業用ファイルの2ページ目を削除してからPDFを作成し、
その後作業用ファイルを削除するという方法です。
ただし、実行するたびにゴミ箱に作業用ファイルが増えていきます。

JavaScript

1function createPdf(filename, presentation, saveFolderId) { 2 3 // 保存先フォルダを取得 4 const folder = DriveApp.getFolderById(saveFolderId); 5 6 // 作業用ファイルを複製し2ページ目を削除 7 const copiedFile = DriveApp.getFileById(presentation.getId()).makeCopy(); 8 const copiedPresentation = SlidesApp.openById(copiedFile.getId()); 9 const copiedSlides = copiedPresentation.getSlides(); 10 copiedSlides[1].remove(); 11 copiedPresentation.saveAndClose(); 12 13 // 作業用ファイルからPDFを作成 14 const pdf = copiedFile.getAs(MimeType.PDF); 15 16 // 指定のファイル名で指定のフォルダに保存 17 const file = DriveApp.createFile(pdf) 18 .setName(filename) 19 .moveTo(folder); 20 21 // 作業用ファイルを削除 22 copiedFile.setTrashed(true); 23 24 // PDFのURLを返す 25 return file.getUrl(); 26 27}

投稿2023/11/07 00:19

編集2023/11/07 02:56
YellowGreen

総合スコア731

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

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

YellowGreen

2023/11/07 00:21

今のcreatePDFは、2ページめを除外するようにはなっていないので申し添えます。
ri-g-yo

2023/11/07 00:54

ありがとうございます! 成功しました! ページ指定に関しては、もう少し頑張ってみます! 大変助かりました🙇
YellowGreen

2023/11/07 02:57

2ページ目の削除方法の例を追記しました。 作業用ファイルを使う方法です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問