Googleスライドでスライドを量産したメモ

色々と遊んでいる中で、スライド100枚くらいを量産したくなったんだけど、手動でやるのは骨が折れるし、しかしmacに入っているkeynoteの方法はよく分からなかったので、googleスライドならスクリプト書いて出来るんじゃないかと思ってやってみたメモです。
遊びでやったので、そんなに深追いしていないのだけど、記憶を辿って軽くメモを残します。

# Googleスライドを用意する
[使うGoogleスライドを用意します。](https://support.google.com/docs/answer/2763168?co=GENIE.Platform%3DDesktop&hl=ja)
<img width="1096" alt="スクリーンショット 2018-03-11 16.37.33 2.png" src="https://qiita-image-store.s3.amazonaws.com/0/59687/ba6ab99f-0f99-aa1e-7fc7-c6635c98a6fd.png">
ファイルが新規作成されると、スライド一枚が付いているんだけど、紛らわしいので消しました。
赤線部分は後述。

# スクリプトの準備
<img width="408" alt="スクリーンショット 2018-03-11 16.56.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/59687/ced58c0f-481d-fef7-8a03-7ed22c022bc2.png">
画面のツール→スクリプトエディタを選択して、GoogleAppsScriptの画面を開きます。
<img width="694" alt="スクリーンショット 2018-03-11 19.24.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/59687/b942bd51-3579-520c-0612-6ed3bc8052e5.png">
初期画面でこんなカンジ。
最初にgsファイルがあるので、ここに書いていってもらえれば大丈夫。
このプロジェクトを保存します。

# スクリプト詳細
[このサンプル](https://github.com/googlesamples/apps-script/blob/master/advanced/slides.gs)を参考に作成。

```js:コード.gs
//　ファイルのURLを見る
var presentationId = 'AAAAAABBBBBBBCCCCC';

//スライドを50枚作る
function createFiftySlide(){
  for(var i=1; i<=50; ++i){
    var pageId = Utilities.getUuid();
    
    // スライドのページを作成
    var requests = [{
      "createSlide": {
        "objectId": pageId,
        // 何ページ目に入れるか。最初=0
        "insertionIndex": i-1,
      }
    }];
    var slide = Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
    Logger.log("Created Slide with ID: " + slide.replies[0].createSlide.objectId);
    
    //作成したスライドにページの文字を入れる
    var pageElementId = Utilities.getUuid();
    var requests = [{
      "createShape": {
        "objectId": pageElementId,
        "shapeType": "TEXT_BOX",
        "elementProperties": {
          "pageObjectId": pageId,
          "size": {
            "width": {
              "magnitude": 150,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    }, {
      "insertText": {
        "objectId": pageElementId,
        // 入れるテキスト
        "text": "Page" + i,
        "insertionIndex": 0
      }
    }];
    var response = Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
    Logger.log("Created Textbox with ID: " + response.replies[0].createShape.objectId);
    
  }
}
```
本当は100枚を一気に作りたかったけど、やってみたら制限がかかって50枚までしか無理だったので、50枚ずつ作ります。なので2回実行すれば100枚作れます。
最初のpresentationIdは作成したスライドの`https://docs.google.com/presentation/d/AAAAAABBBBBBBCCCCC/edit`というカンジで出ているURLの`AAAAAABBBBBBBCCCCC`の部分です。
最初に出した写真に、赤線を引いてみました。~~(/editを消してしまった…)~~

# GoogleSlidesAPIを有効にする
保存したプロジェクトのGoogleSlidesAPIを有効にします。
[https://console.developers.google.com/apis/library/slides.googleapis.com/](https://console.developers.google.com/apis/library/slides.googleapis.com/)にアクセスして、GoogleSlidesAPIを有効にします。

# 実行してみる
<img width="277" alt="スクリーンショット 2018-03-11 19.45.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/59687/3b50762d-ae9a-a0bc-6aea-77cc87e473c0.png">
赤い四角で囲ったところに書いてあるのが、実行される関数。
さっき書いたサンプルなら`createFiftySlide`が実行すべき関数。
で、丸で囲った再生ボタンっぽいのを押せば実行される。
多分、最初に実行した時に、ファイルの編集の権限を許可するようにメッセージが出るかなと思うので、許可すればスライドを量産出来る。

# 結果
こんなカンジ。
<img width="1044" alt="スクリーンショット 2018-03-11 19.48.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/59687/01aa9ee5-83dc-a53b-51c0-2097c25cd2b5.png">

#最後に
GoogleAppsScriptは前にちょっくら弄ったんだけど、その時と画面が変わっててというか、綺麗になっていて嬉しかった。
また、何か遊んでみたいなと思ってます。