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

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

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

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

Google フォーム

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

Google Apps Script

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

Q&A

1回答

973閲覧

Googleフォームの回答によってスプレッドシートを変えたい(担当者ごとのシート)

yama222

総合スコア1

Google スプレッドシート

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

Google フォーム

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

Google Apps Script

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

0グッド

1クリップ

投稿2023/07/04 04:15

編集2023/07/04 04:27

実現したいこと

Googleフォームの最初の項目でプルダウン形式で、
「カテゴリ1」「カテゴリ2」「カテゴリ3」…を回答者に選択してもらい、
各担当者がみれるようにカテゴリ別のスプレッドシートを作りたいです。

「カテゴリ1」と「カテゴリ3」は、スプレッドシートA
「カテゴリ2」と「カテゴリ4」はスプレッドシートB
というように複数のカテゴリを別々の担当者がみれるように行いたいです。

※既に回答別、各担当へのメール通知は行っています。

初心者で申し訳ないですが、ご指導いただければ幸いです。

前提

google formsでプルダウンによって選択された
回答によって送信先のアドレスを変更を行っています。

具体的にいいますと、
google formsの最初の項目でプルダウン形式で
「カテゴリ1」「カテゴリ2」「カテゴリ3」を回答者に選択してもらい、
「カテゴリ1」なら1の担当者のアドレス、
「カテゴリ2」なら2の担当者のアドレス…
「カテゴリ3」なら3の担当者のアドレス…

といったロジックにしています。
アドレスはすべて、会社のドメインのもので[@gmail.com]ではありません。

ここまでは、前回の質問で解決しました。
ありがとうございます。(Googleフォームのエディタで編集済み)

お願いしたいこと

Googleスプレッドシートの拡張機能からGoogle Apps Scriptで
コードを打つと思うのですが、
どのようなコードを打てばいいのか知りたいです。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bebebe_

2023/07/04 05:16

スプレッドシートを作る、見れるようにするということの詳細がわかりませんがif文で分岐した先で処理すればできると思います。
YAmaGNZ

2023/07/04 05:37

事前にスプレッドシートを作って、それを共有設定すればいいのではないでしょうか? データはメール送信時に該当スプレッドシートに転記するなりすればよろしいかと思います。
guest

回答1

0

下記のような感じでメールを送信する際に各担当が見れるスプレッドシートに必要データを転記すればいいのではないでしょうか。

スプレッドシートは事前に作成しておき、それぞれの担当が閲覧できるように共有設定しておけばいいかと思います。

シートへの転記部分はあくまで例なので正常に動作しません。

JavaScript

1function sendForm(e){ 2 // スプレッドシートA 3 let SheetA = SpreadsheetApp.openById('スプレッドシートAのID').getSheetByName('シート1'); 4 // スプレッドシートB 5 let SheetB = SpreadsheetApp.openById('スプレッドシートBのID').getSheetByName('シート1'); 6 7 // 件名、本文 8 var subject = "問い合わせが送信されました"; 9 var body = ""; 10 // メール送信先 11 var to = "xxxx@xxxx.xxxx"; 12 13 var itemResponses = e.response.getItemResponses(); 14 for (var i = 0; i < itemResponses.length; i++) { 15 var itemResponse = itemResponses[i]; 16 var title = itemResponse.getItem().getTitle(); 17 var ans = itemResponse.getResponse(); 18 body += '\n\n['+title+']\n\n'; 19 body += ans; 20 21 if (title==="カテゴリ選択の質問名") { 22 if (ans==="カテゴリ1") { 23 to = "aaaa@aaaa.aaaa"; 24 // シートAに転記 25 SheetA.getRange().setValues(データ); 26 } else if (ans==="カテゴリ2") { 27 to = "bbbb@bbbb.bbbb"; 28 // シートBに転記 29 SheetB.getRange().setValues(データ); 30 } else if (ans==="カテゴリ3") { 31 to = "cccc@cccc.cccc"; 32 // シートAに転記 33 SheetA.getRange().setValues(データ); 34 } 35 } 36 } 37 MailApp.sendEmail({to:to,subject:subject, body:body}); 38}

投稿2023/07/04 07:14

YAmaGNZ

総合スコア10555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yama222

2023/07/04 07:41

### ありがとうございます ご回答ありがとうございます。データの転記なるほどです。 はじめて、GASを触っているので初歩的な質問ばかりで申し訳ございません。 ### エラーが出てしまいました TypeError: Cannot read properties of undefined (reading 'response') sendForm @ コード.gs:13 ### 該当のソースコード function sendForm(e){ // スプレッドシートA let SheetA = SpreadsheetApp.openById('シートのIDを打ちました').getSheetByName('シート1'); // スプレッドシートB let SheetB = SpreadsheetApp.openById('シートのIDを打ちました').getSheetByName('シート1'); // 件名、本文 var subject = "問い合わせが送信されました"; var body = ""; // メール送信先 var to = "aaaa@aaaaメアド打ちました"; var itemResponses = e.response.getItemResponses(); for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var title = itemResponse.getItem().getTitle(); var ans = itemResponse.getResponse(); body += '\n\n['+title+']\n\n'; body += ans; if (title==="書籍") { if (ans==="A") { to = "aaaa@aaaaメアド打ちました"; // シートAに転記 SheetA.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()) } else if (ans==="B") { to = "aaaaa@aaaaaメアド打ちました "; // シートBに転記 SheetB.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()) } } } MailApp.sendEmail({to:to,subject:subject, body:body}); } ### どうすればよいでしょうか。    ご指導いただければ幸いです。
YAmaGNZ

2023/07/04 08:06

エディタから実行していませんか? これはフォームで回答された時に動作するもののはずです(メール送信時と同じです) なのでフォーム回答するなりして動作確認しましょう。 また SheetA.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()) といった感じで書いていますが、これでは指定範囲を取得するだけでデータのセットにはなっていません。
YAmaGNZ

2023/07/04 08:10

また、1行ごとにデータを追加していきたいのであれば、 SheetA.appendRow(行のデータ); といった感じで行を追加していくのもありかと思います。 シートのフォーマットにもよると思いますので自分に合った方法をとってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問