GASでGoogleフォームをPDF化する方法

Yahoo!知恵袋の回答受付中の質問に勝手に答えるコーナーです。

今回の質問は、

GASを用いたGoogleフォームのPDF化について

google apps script(GAS)を用いて、googleフォームの回答結果をスプレッドシートに抽出し、PDF化してドライブに保存するというプログラムを作っています。
以下URLの記事を参考に作ってみたのですが、複数回答の項目に関して上手く表示されません。

https://imabari.hateblo.jp/entry/2018/10/25/225825

配列を使うのかな、、、といろいろ試してみたのですがイマイチでした。

アドバイスをいただけたらと思います。
どうぞよろしくお願いいたします。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10218512080

回答

Google フォームの複数回答の項目を GAS で取得するのは、質問者様も書かれているとおり配列で行います。

質問者様が参考にされた、

を元に、スプレッドシートを変更しスクリプトを作成しました。

スプレッドシート

まずは、ベースとなるスプレッドシートは、「活動内容」の部分を下記のように変更しました。

Google フォーム

「活動内容」をチェックボックスにして、複数回答できるように変更しました。
(FAX については省略しました。)

フォームのスクリプト

今回は、メールの送信分を省略し、PDF 作成のみとしました。

スプレッドシートの URL の
https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx を

var ssid = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”;

に貼り付けます。

また、フォルダの URL の
https://drive.google.com/drive/folders/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy を

var folder = DriveApp.getFolderById(“yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy”);

に貼り付けます。

オリジナルからの変更点は、「活動内容」をスプレッドシートに書き込む 70~74行目の部分です。

47行目の content = value; で配列が取得できているので、その内容をスプレッドシートの「活動内容」の各行に書き込みます。

まとめ

Googleフォームに入力した内容をスプレッドシートのテンプレートに入力したり、PDF化できるのは便利ですね。

ほんとは、スプレッドシートで紙の書類の書式のようなものを作るのはよろしくないのです。

紙書類をなくしてデジタル化できると良いのですが、相手もあることなので、どうしても仕方がない場合は、スクリプトで効率化していきましょう。