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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Google スライド

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

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google Apps Script

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

解決済

GAS スライドをページごとに画像化してGoogle ドライブに保存する方法について

s.kono
s.kono

総合スコア36

Google スライド

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

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google Apps Script

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

1回答

0評価

0クリップ

4568閲覧

投稿2019/10/21 06:04

編集2019/10/23 07:00

Google Apps Script でGoogleドライブにあるスライドやパワーポイントの1スライドを自動で画像化して同じフォルダに保存したいです。
こちらのサイトを参考にというか、ほぼ同じchordなのですが以下のエラーが出て実現できません。
事前準備としてOAuth2 for Apps Scriptのライブラリを有効化しています。

参考サイト:https://codeday.me/jp/qa/20190305/364927.html
エラー:text/html から image/png への変換はサポートされていません。

ご教示よろしくお願いします。

javascript

/* 参考サイト https://codeday.me/jp/qa/20190305/364927.html */ function main(){ var id=PropertiesService.getScriptProperties().getProperty('slide_id'); downloadPresentation(id) } function downloadPresentation(id) { var slideIds = getSlideIds(id); for (var i = 0, slideId; slideId = slideIds[i]; i++) { downloadSlide('Slide ' + (i + 1), id, slideId); } } function downloadSlide(name, presentationId, slideId) { var url = 'https://docs.google.com/presentation/d/' + presentationId + '/export/png?id=' + presentationId + '&pageid=' + slideId; var options = { "muteHttpExceptions" : true,  //エラー捕捉 headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() } }; try { //成功時 var response = UrlFetchApp.fetch(url, options); var image = response.getAs(MimeType.PNG);//←text/html から image/png への変換はサポートされていませんとエラーになります image.setName(name); DriveApp.createFile(image); } catch(e) { //エラー時 Logger.log(e.message); } } function getSlideIds(presentationId) { var url = 'https://slides.googleapis.com/v1/presentations/' + presentationId; var options = { "muteHttpExceptions" : true, //エラー捕捉 headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() } }; try{ var response = UrlFetchApp.fetch(url, options); } catch(e) { //エラー時 Logger.log(e.message); } var slideData = JSON.parse(response); return slideData.slides.map(function(slide) { return slide.objectId; }); }

結論としては
エラーはchordによるエラーではなく、環境回りの設定がうまくいっていなかったということでした。
最終的にはマイドライブに保存された画像ファイルを元スライドにあるフォルダに移動する部分も追加した次のコードでうまく動いています。

不要だったもの

  • OAuth2ライブラリの追加

- Google Slides API

Google

/* 参考サイト https://medium.com/@gw_cule/gas%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E8%AA%8D%E5%8F%AF%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-67f195d7a425 https://codeday.me/jp/qa/20190305/364927.html */ function main(){ var id=PropertiesService.getScriptProperties().getProperty('slide_id'); var folderid=PropertiesService.getScriptProperties().getProperty('folder_id'); downloadPresentation(id,folderid) } function downloadPresentation(id,folderid) { var slideIds = getSlideIds(id); for (var i = 0, slideId; slideId = slideIds[i]; i++) { var file = downloadSlide('Slide ' + (i + 1), id, slideId); moveSlides(file,folderid); } } function downloadSlide(name, presentationId, slideId) { var url = 'https://docs.google.com/presentation/d/' + presentationId + '/export/png?id=' + presentationId + '&pageid=' + slideId; var options = { "muteHttpExceptions" : true,  //エラー捕捉 headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() } }; try { //成功時 var response = UrlFetchApp.fetch(url, options); var image = response.getAs(MimeType.PNG); image.setName(name); var file=DriveApp.createFile(image); return file; } catch(e) { //エラー時 Logger.log(e.message); } } function getSlideIds(presentationId) { var url = 'https://slides.googleapis.com/v1/presentations/' + presentationId; var options = { "muteHttpExceptions" : true, //エラー捕捉 headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() } }; try{ var response = UrlFetchApp.fetch(url, options); } catch(e) { //エラー時 Logger.log(e.message); } var slideData = JSON.parse(response); return slideData.slides.map(function(slide) { return slide.objectId; }); } function moveSlides(file,folderid){ var folder = DriveApp.getFolderById(folderid); file.makeCopy(file.getName(),folder);//ルート(マイドライブ直下)に作られた画像ファイルをコピーする Logger.log(file.getName() + ": this file delete"); file.setTrashed(true); }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google スライド

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

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google Apps Script

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。