Google Apps Script でGoogleドライブにあるスライドやパワーポイントの1スライドを自動で画像化して同じフォルダに保存したいです。
こちらのサイトを参考にというか、ほぼ同じchordなのですが以下のエラーが出て実現できません。
事前準備としてOAuth2 for Apps Scriptのライブラリを有効化しています。
参考サイト:https://codeday.me/jp/qa/20190305/364927.html
エラー:text/html から image/png への変換はサポートされていません。
ご教示よろしくお願いします。
javascript
1/* 参考サイト 2https://codeday.me/jp/qa/20190305/364927.html 3*/ 4function main(){ 5 var id=PropertiesService.getScriptProperties().getProperty('slide_id'); 6 downloadPresentation(id) 7} 8 9function downloadPresentation(id) { 10 var slideIds = getSlideIds(id); 11 12 for (var i = 0, slideId; slideId = slideIds[i]; i++) { 13 downloadSlide('Slide ' + (i + 1), id, slideId); 14 } 15} 16 17function downloadSlide(name, presentationId, slideId) { 18 var url = 'https://docs.google.com/presentation/d/' + presentationId + 19 '/export/png?id=' + presentationId + '&pageid=' + slideId; 20 var options = { 21 "muteHttpExceptions" : true, //エラー捕捉 22 headers: { 23 Authorization: 'Bearer ' + ScriptApp.getOAuthToken() 24 } 25 26 }; 27 try { 28 //成功時 29 var response = UrlFetchApp.fetch(url, options); 30 var image = response.getAs(MimeType.PNG);//←text/html から image/png への変換はサポートされていませんとエラーになります 31 image.setName(name); 32 DriveApp.createFile(image); 33 } catch(e) { 34 //エラー時 35 Logger.log(e.message); 36 } 37 38} 39 40function getSlideIds(presentationId) { 41 42 var url = 'https://slides.googleapis.com/v1/presentations/' + presentationId; 43 var options = { 44 "muteHttpExceptions" : true, //エラー捕捉 45 headers: { 46 Authorization: 'Bearer ' + ScriptApp.getOAuthToken() 47 } 48 }; 49 try{ 50 var response = UrlFetchApp.fetch(url, options); 51 } catch(e) { 52 //エラー時 53 Logger.log(e.message); 54 } 55 var slideData = JSON.parse(response); 56 return slideData.slides.map(function(slide) { 57 return slide.objectId; 58 }); 59 60} 61 62
結論としては
エラーはchordによるエラーではなく、環境回りの設定がうまくいっていなかったということでした。
最終的にはマイドライブに保存された画像ファイルを元スライドにあるフォルダに移動する部分も追加した次のコードでうまく動いています。
不要だったもの
- OAuth2ライブラリの追加
- Google Slides API
1/* 参考サイト 2https://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 3https://codeday.me/jp/qa/20190305/364927.html 4*/ 5function main(){ 6 var id=PropertiesService.getScriptProperties().getProperty('slide_id'); 7 var folderid=PropertiesService.getScriptProperties().getProperty('folder_id'); 8 downloadPresentation(id,folderid) 9} 10 11function downloadPresentation(id,folderid) { 12 var slideIds = getSlideIds(id); 13 14 for (var i = 0, slideId; slideId = slideIds[i]; i++) { 15 var file = downloadSlide('Slide ' + (i + 1), id, slideId); 16 moveSlides(file,folderid); 17 } 18} 19 20function downloadSlide(name, presentationId, slideId) { 21 22 var url = 'https://docs.google.com/presentation/d/' + presentationId + 23 '/export/png?id=' + presentationId + '&pageid=' + slideId; 24 var options = { 25 "muteHttpExceptions" : true, //エラー捕捉 26 headers: { 27 Authorization: 'Bearer ' + ScriptApp.getOAuthToken() 28 } 29 }; 30 try { 31 //成功時 32 var response = UrlFetchApp.fetch(url, options); 33 var image = response.getAs(MimeType.PNG); 34 image.setName(name); 35 var file=DriveApp.createFile(image); 36 return file; 37 } catch(e) { 38 //エラー時 39 Logger.log(e.message); 40 } 41 42} 43 44function getSlideIds(presentationId) { 45 46 var url = 'https://slides.googleapis.com/v1/presentations/' + presentationId; 47 var options = { 48 "muteHttpExceptions" : true, //エラー捕捉 49 headers: { 50 Authorization: 'Bearer ' + ScriptApp.getOAuthToken() 51 } 52 }; 53 try{ 54 var response = UrlFetchApp.fetch(url, options); 55 } catch(e) { 56 //エラー時 57 Logger.log(e.message); 58 } 59 var slideData = JSON.parse(response); 60 return slideData.slides.map(function(slide) { 61 return slide.objectId; 62 }); 63 64} 65 66function moveSlides(file,folderid){ 67 68 var folder = DriveApp.getFolderById(folderid); 69 file.makeCopy(file.getName(),folder);//ルート(マイドライブ直下)に作られた画像ファイルをコピーする 70 Logger.log(file.getName() + ": this file delete"); 71 file.setTrashed(true); 72 73} 74
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/23 01:05
2019/10/23 01:14
2019/10/23 01:29
2019/10/23 01:47
2019/10/23 02:41
2019/10/23 02:57
2019/10/23 03:04
2019/10/23 05:02
2019/10/23 07:02