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

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

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

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

Google フォーム

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

解決済

【GAS】フォーム→スプレッドシート→Gメール e.valuesの取得

donguriko
donguriko

総合スコア19

Google スプレッドシート

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

Google フォーム

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

1回答

0リアクション

0クリップ

384閲覧

投稿2022/08/16 10:14

編集2022/08/16 10:55

前提

Googleフォームで簡単な申請ワークフローを作りたいです。
スプレッドシート側でfunction sendMessage(e)をトリガー画面で
イベントソース:スプレッドシートから
イベントの種類:フォーム送信時
で登録しました。

(フォームイメージ)
イメージ説明

イメージ説明

イメージ説明

(回答集約用スプレッドシートイメージ)
イメージ説明

実現したいこと

スプレッドシート側のGASで、新たな申請があった際に、
指定アドレス宛にGoogleフォームの回答内容を含んだ
「回答お知らせメール」をGASで自動送信したいです。

発生している問題・エラーメッセージ

フォーム送信をすると、指定アドレス宛にメール送信する処理はできています。
が、フォームの回答内容の取得で失敗しているようで、メール本文上で
表示がされません。

(失敗メールイメージ)
イメージ説明

該当のソースコード

以下全文記載します。

GAS

function sendMessage(e) { console.log(e) //▼配列(e.values)から取得するデータの定義 //フォームからの送信データは配列(e.values)として格納 //取得したい項目はタイムスタンプ、部署、従業員番号、申請者氏名4つ const timeStamp = e.values[0] ; //タイムスタンプは配列(e.values)のインデックス1 const dept = e.values[1] ; //部署は配列(e.values)のインデックス2 const EmpNo = e.values[2] ; //従業員番号は配列(e.values)のインデックス3 const Name = e.values[3] ; //申請者氏名は配列(e.values)のインデックス4 const ss = SpreadsheetApp.openById('  ~省略~ '); mySheet1 = ss.getSheetByName('回答マージ'); mySheet2 = ss.getSheetByName('申請お知らせメール宛先'); //▼メール宛先の設定  //★あとで修正★ //「申請お知らせメール宛先シート(mySheet2)のセルF6から取得 //const recipient = mySheet2.getRange(4, 6); const recipient = ('  ~省略~ '); //▼メール件名の設定 const subject = '【稼働テスト_XXX変更申請】'; //▼メール本文の設定 let body = ''; body += '本メールは自動送信メールです。\n'; body += '\n'; body += 'XXXの変更申請がありました。\n'; body += '・申請日時    :${timeStamp}\n'; body += '・申請者所属部署 :${dept}\n'; body += '・申請者従業員番号:${EmpNo}\n'; body += '・申請者氏名   :${Name}\n'; body += '\n'; body += '以下URLからスプレッドシートを確認し、\n'; body += '「確認①(●列)」\n'; body += '「確認②(●列)」\n'; body += 'にチェックを入れてしてください。\n'; body += 'https://  ~省略~ '; //▼メールオプション const options = { name: '<自動送信>XXX変更申請', noReply: true }; //▼メール送信 GmailApp.sendEmail(recipient, subject, body, options); }

試したこと

画面左の「実行数」ボタンで表示されるログ? で確認をすると、
namedValuesのところに内容が入っていて、スプレッドシートにも
内容転記がされているので配列e.values内にデータはありそう。
イメージ説明

メールに流用したい、
・timeStamp
・dept
・EmpNo
・Name
の4項目のインデックス番号の指定が誤っているのか?
と、思っているのですが、知識が足りず、どうやって正しい
インデックス番号を確認すればよいか分かりません。
(ネットでも、そこまで初心者向けの解説を見つけられず。。。)

回答集約スプレッドシートの項目の並び順をもとに左からインデックス[0]、、、
でコードを書いてみましたが、実行数画面で表示されているイメージでは
各項目の並びがスプレッドシートと異なっています。

<質問①>
メール本文上で内容表示がされない原因と修正方法を教えてください。
(単純なコード記載ミスの見落としでしたら申し訳ありません)

<質問②>
インデックス番号の指定誤りが原因の場合は、
次回から自力解決したいのでインデックス番号の確認の仕方を教えてください。

<質問③>
初歩の初歩な内容で本当に申し訳ありません。
フォームからの送信をトリガーにしている時のログ等の確認の仕方を教えて
ください。
console.log等で正しくデータ取得しているのか確認したいと思ったのですが、
スクリプト画面の実行ボタンから処理させると、e.valuesか取得できず。。。
次回から自力解決したいので、どうすれば正しくデータ取得できているかの
確認やデバッグ? 確認をすればよいか教えてください。

補足情報(FW/ツールのバージョンなど)

非エンジニアビギナーです。
お忙しいところ申し訳ありません。
回答に時間がかかってもかまわないので、次回から自力解決できるように
なりたいので、非エンジニアビギナーレベルでも理解できるレベルでの
回答をいただけると助かります。

GAS本や下サイトを参照しましたが、
イベントオブジェクトのe.valuesの使い方が消化不良気味です。

(参照したサイト)
リンク内容①
リンク内容②

回答を受け追記
(ログイメージ 取得したい4項目のconsole.log)
無事確認できました。ありがとうございました。
イメージ説明

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Google スプレッドシート

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

Google フォーム

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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