2022/03/08に更新

【GASで便利に】フォームの回答を元にスライドを作成する

フォームスライド

Googleフォームが送信されるたびに、回答内容をスライドに反映させるGoogle Apps Scriptです。思いつきで作ったんですが、自己紹介やアイディアなどを集める時に良いかも?

こんな悩みを解決します


  • メンバーの自己紹介の資料を作りたい。フォーマットが崩れたり他人のスライドが編集できてしまうのでスライドを直接触らせたくない。

用意するもの


フォームと、回答を反映させるスライドが必要です。
スクリプトはフォームの方に登録してください。

このスクリプトで出来ること


フォームに入力された内容を、スライドに反映させることが出来ます。
1回答に付きスライドが1ページ追加されます。

使い方


1.準備

エディタにコードをコピペした後、「// スライドを指定する」の部分にスライドのURLを入力してください。
Googleスライドを開いたときにアドレスバーに表示されているURLすべてでOKです。

また、フォームも作っておきます。
サンプルとして「タイトル」「説明」「記入者」の3つの項目を作ります。
入力済みですが、こんなフォームです。

2.トリガーをセットする

フォームが送信された時にスクリプトが実行されるよう、以下のようにトリガーを作成します。

  • 実行する関数: onSubmit
  • デプロイ時に実行: HEAD
  • イベントのソースを選択: フォームから
  • イベントの種類を選択: フォーム送信時

3.フォームを送信して動作を確認する

スライドが1枚増えて、フォームの内容が転記されました。

スクリプト



/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00055/index.html
 */

function onSubmit(e) {

  // スライドを指定する
  const slide = SlidesApp.openByUrl('ここにスライドのURLをいれてください');

  // フォームの項目や回答を取得する
  const form_responses = e.response.getItemResponses();

  // スライドを1ページ新規作成する
  const slide_new = slide.appendSlide();

  // フォームの項目数だけループする
  for (var i = 0; i < form_responses.length; i++) {

    // 質問に対する回答を取得する
    let answer = form_responses[i].getResponse();

    // フォームの質問を取得
    let question = form_responses[i].getItem().getTitle();

    // 回答によってシェイプのサイズや位置、フォントサイズを変えたいので分岐
    if (question == 'タイトル') {
      let shape = slide_new.insertShape(SlidesApp.ShapeType.TEXT_BOX, 20, 20, 500, 50); //テキストボックスを追加する
      let text = shape.getText(); //シェイプのテキストオブジェクトを取得
      text.setText(answer); //シェイプに回答を反映させる
      text.getTextStyle().setBold(true).setFontSize(30); //タイトルなので太字、大きめ

    } else if (question == '説明') {
      let shape = slide_new.insertShape(SlidesApp.ShapeType.TEXT_BOX, 20, 90, 680, 300);
      let text = shape.getText();
      text.setText(answer);

    } else if (question == '記入者') {
      let shape = slide_new.insertShape(SlidesApp.ShapeType.TEXT_BOX, 530, 20, 170, 50);
      let text = shape.getText();
      text.setText(answer);
      text.getTextStyle().setBold(true).setFontSize(20);
    }
  }
}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp