質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

解決済

Googleフォーム複数回答を別のスプレッドシートに入力したい

yashiron
yashiron

総合スコア2

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

1回答

0評価

0クリップ

3533閲覧

投稿2020/09/04 07:23

編集2020/09/04 07:24

前提・実現したいこと

googleフォームにアンケート入力、入力された内容を様式(別のスプレッドシート)
に当てはめて入力してPDF出力するシステムを作っています。
回答を取得し、設定したセルに入力する際に回答が複数あるもの
(googleフォームのチェックボックスで複数選べるようにしています。)
が、セルに入力される際に一番初めに選んだものしか反映されません。
例えば、☑A ☑B □C ☑D
と回答するとAしかセルに反映されません。

できればカンマ区切りでA、B、Dと表示されるようにしたいです。

またPDF化の際、シート1とシート2の両方を1つのPDFに出力する方法はありますでしょうか。

もしできなければ、シート1とシート2をどちらも(別々でも可)PDF化できる方法を教えていただきたいです。
現在のソースコードではシート1しかPDF化されず困っています。

GASを勉強したてで色々不足しているかもしれないですが、
回答よろしくお願いします。

該当のソースコード

GAS

// FormApp.getActiveForm() function myFunction(event) { //今日の日付 var request_date = new Date(); // フォーム var res = event.response.getItemResponses(); var name_kanji;//氏名 var name_furi;//フリガナ var reason;//知ったきっかけ チェックボックス式の複数回答可を使用 for (var n in res) { var item = res[n]; var name = item.getItem().getTitle(); var value = item.getResponse(); switch (name) { case '氏名': name_kanji = value; break; case 'フリガナ': name_furi = value; break; case '知ったきっかけ': reason = value; break; } } // スプレッドシートURLから抽出したIDを入力 var ssid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; var ss = SpreadsheetApp.openById(ssid); var pdfss = ss.getSheetByName("シート1"); var sheetid = ss.getActiveSheet().getSheetId();  pdfss.getRange("V1").setValue(request_date); //入力日 pdfss.getRange("C5").setValue(name_furi); //フリガナ pdfss.getRange("C6").setValue(name_kanji); //氏名 pdfss.getRange("J6").setValue(reason); //知ったきっかけ  //2ページ目 var ssid = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"; var ss = SpreadsheetApp.openById(ssid); var pdfss = ss.getSheetByName("シート2"); var sheetid = ss.getActiveSheet().getSheetId();  pdfss.getRange("V1").setValue(request_date); //入力日 pdfss.getRange("C5").setValue(name_furi); //ふりがな pdfss.getRange("C6").setValue(name_kanji); //氏名 pdfss.getRange("J6").setValue(reason); //知ったきっかけ  SpreadsheetApp.flush(); // 以下PDF化のためのプログラムです。今回はA4サイズでPDF化するため、オプション設定も下記のようになります。 var url = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz".replace("SSID", ssid); var url_ext = []; var opts = { format: "pdf", size: "A4", fzr: "false", portrait: "true", gridlines: "false", printtitle: "false", pagenumbers: "false", fitw: "true", sheetnames: "false", gid: sheetid }; // 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納 for (optName in opts) { url_ext.push(optName + "=" + opts[optName]); } // url_extの各要素を「&」で繋げる var options = url_ext.join("&"); Logger.log(options) try { // API使用のためのOAuth認証 var token = ScriptApp.getOAuthToken(); var response = UrlFetchApp.fetch(url + options, { headers: { "Authorization": "Bearer " + token } }); // ファイル名を作成「入力日_名前.pdf」 var fileName = request_date + "_" + name_kanji + ".pdf"; // Googleドライブでフォルダを作成してURLからIDを入力 var folder = DriveApp.getFolderById("1P6R6JlBU5g1nREOv7-l8dtGp08BdEJK2"); var fileBlob = response.getBlob().setName(fileName); folder.createFile(fileBlob); } catch (e) { Logger.log("ファイル生成に失敗しました" + e) } }

参考資料

https://imabari.hateblo.jp/entry/2018/10/25/225825
こちらのサイトを参考にして作成しました。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。