16

私は、クラウドでホストされている軽量のイラストレーターの代わりとして Google スライドを使用することの大ファンです (これはたまたま無料で共同作業を行うこともできます!)。ここに私のプロセスに関するいくつかの考えを書きました:

https://medium.com/@tomcritchlow/how-to-use-google-slides-as-a-free-cloud-hosted-illustrator-replacement-f472e6c3a881

私のワークフローでやろうとしているのは、プレゼンテーション内のすべてのスライドを一度に画像としてダウンロードすることですか? Google スライドの UI では、各スライドを一度に 1 つずつ PNG としてしかダウンロードできませんか?

アドオンや Apps Scripts を使用してこれを行うことはできますか? どこから始めればよいかわからない...ありがとう!

4

7 に答える 7

17

以下は私のために働いた:

設定

[Resources] > [Developer Console Project] > [View Developers Console]で、 Slides APIDrive APIの両方を有効にします。

実行

関数内のスライド URL から取得した ID を置き換えてstart()実行します。例:

https://docs.google.com/presentation/d/<id>/edit

関数は PNG をドライブに保存します。これは、特定のフォルダーなどにすべてをグループ化するように拡張できます。

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 = {
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
    }
  };
  var response = UrlFetchApp.fetch(url, options);
  var image = response.getAs(MimeType.PNG);
  image.setName(name);
  DriveApp.createFile(image);
}

function getSlideIds(presentationId) {
  var url = 'https://slides.googleapis.com/v1/presentations/' + presentationId;
  var options = {
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
    }
  };
  var response = UrlFetchApp.fetch(url, options);

  var slideData = JSON.parse(response);
  return slideData.slides.map(function(slide) {
    return slide.objectId;
  });
}

function start() {
  downloadPresentation('Slides document id')
}
于 2016-11-18T13:57:44.833 に答える