ここで紹介するGAS(diyReplay)とスプレッドシートの関数を使って、Googleフォームの回答以外の値を、返信メールの文面に簡単に表示できます。
例えば、回答項目を使って計算した合計金額などを、返信メールの文章に加えることができます。
準備
テストのフォームとスプレッドシートを作りながら、作成したGAS(diyReply)の機能を説明します。
フォーム
次のようなフォームを作ります。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_20h21_35.png)
①返信メールの件名
②返信メールの本文
③返信メールの宛先
スプレッドシート
スプレッドシートにリンクします。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_20h30_02.png)
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_20h25_53.png)
シートを追加して、返信メールに必要なシート(ここでは、シート1)を作ります。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_20h38_12.png)
- 1行目(B1~E1)には、質問項目の①②③を入れます。(必要なら好きな言葉に替えます)
- B3:OFF(半角)を入れるとメールを送りません。(文章作成時のテスト時に使えます。)
- B4:返信メールの件名を入れます。ここでは、=C2を入れます。
- B5:返信メールの本文を入れます。ここでは、=D2を入れます。
- B6:返信メールの宛先を入れます。ここでは、=E2を入れます。
- B7:必要なら、CC:を入れます。複数の場合は、aaa@gmail.com, bbb@gmail.comのように,で区切ってください。
- B8:必要なら、BCC:を入れます。複数の場合は、aaa@gmail.com, bbb@gmail.comのように,で区切ってください。
- B9:必要なら、送信元(自分)の表示名を入れます。
- B10:必要なら、返信先アドレスを入れます。
GAS
GAS(diyReply)を登録します。スクリプトエディタを開きます。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_21h02_48.png)
次のGAS(diyReplay)をエディタへコピペします。
- function diyReply(SheetNo) {
- //アクティブフォーム
- const form = FormApp.getActiveForm();
- //選択肢シート:SheetNoは必要なら変更する(一番左のシートが0、2番目が1、3番目が2、、、)
- if(!(SheetNo>1)) SheetNo = 1;
- const ss = SpreadsheetApp.openById(form.getDestinationId());
- //フォームとリンクしている回答シート
- const answerSheet = ss.getSheets()[0];
- //返信メールのシート(2枚目のシート)
- const mailSheet = ss.getSheets()[SheetNo];
- //回答シートの最終行列
- const lastRow = answerSheet.getLastRow();
- const lastCol = answerSheet.getLastColumn();
- //回答シートの最終行を配列に取得・返信メールのシートにセット
- mailSheet.getRange(2,2,1,lastCol).setValues(answerSheet.getRange(lastRow,1,1,lastCol).getDisplayValues());
- //メールシートの項目(セル:B3-B10)を配列に取得
- const mailTbl = mailSheet.getRange('B3:B10').getDisplayValues().map(elm => elm[0]);
- //OFF以外はメールを送信
- if(mailTbl[0]!='OFF')
- GmailApp.sendEmail(mailTbl[3],mailTbl[1],mailTbl[2],{cc:mailTbl[4],bcc:mailTbl[5],name:mailTbl[6],replyTo:mailTbl[7]});
- } //Ver1.1.0 for maintenance
↓ ↓ コピペ ↓ ↓
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_21h06_50.png)
トリガー
トリガーを追加します。
![](https://terihat.com/wp-content/uploads/2023/05/2023-05-29_13h34_33-2.png)
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_21h12_16.png)
イベントの種類の選択は、「フォーム送信時」を選びます。
※承認を求められたら、「Advanced」(あるいは、「詳細」)→「Go to ~~(Unsafe)」(あるいは、「~~に移動」)→「Allow」(あるいは、「許可」)
![](https://terihat.com/wp-content/uploads/2023/05/2023-05-29_18h04-1.png)
動作テスト
フォームを実行(プレビュー)して、回答、そして送信します。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-17_22h32_00-1.png)
結果、リンクしたシート(フォームの回答)
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_12h58_18-1.png)
結果、シート1に次のように表示されています。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_12h58_54-1.png)
結果、宛先(TO:)へ送られてきた返信メールです。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_12h59_43-1.png)
成功しました。
このように、GAS(diyReply)はフォームからの回答をシート1にコピー、シート1の内容をメールするだけです。
つまり、思い通りのメールを送るには、スプレッドシートの関数を駆使して自分で作る必要があります。
そして、どのような返信メールも自由自在に作ることができます。
実践編
応用例その8
フォームより入力された項目には価格があり、その合計金額をメールに表示したいとします。
注文商品(価格あり)の個数をプルダウンのメニューから選ぶフォームです。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_22h30_51-747x1024.png)
返信メールのためのシート1を次のように作りました。
数式表示[Ctrl]+@しています。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_22h33_01-1024x560.png)
テーブル(コピペ用)に表示します。
質問 | タイムスタンプ | 名前 | メールアドレス | 注文商品1(1,500円/個) | 注文商品2 (2,500円/個) |
最新の回答 | |||||
OFF: メールを送らない | |||||
件名 | ご注文承りました | ||||
本文 | =C2&" 様、 ご注文をありがとうございます。 ------------------------------- 注文商品: "&E1&"×"&E2&"個 "&F1&"×"&F2&"個 合計金額:"&TEXT((1500*E2+2500*F2),"#,##0")&"円 ------------------------------- お支払方法は、~~~ またのご利用をお待ちしております。" | ||||
TO: | =D2 | ||||
CC:(省略可) | |||||
BCC:(省略可) | |||||
NAME:(省略可) | 〇〇商店 | ||||
REPLY TO:(省略可) |
"文字列"(ダブルクォーテーションで挟まれた文字列)とセルの数値(C2など)を、&(半角)でつなぎながら文章を書くのは慣れないと少し難しいかもしれません。
コツは最初に"を付けてから、一気に文章を書きあげて最後に"で閉じます。
この時、改行([Alt]+[Enter]キー)も気にせずに使います。
それから必要な箇所を"&※※&"に置き換えていきます。(※※は、A1,、B2など)
B5セルに望みの文章が表示出来たら、それがそのままメールの文章になります。
実行(プレビュー)します。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_22h39_01.png)
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_22h40_14.png)
成功です。
合計金額が表示された返信メールが送られてきました。
シート1の名前(NAME:)で記した○○商店も表示されています。
![](https://terihat.com/wp-content/uploads/2023/06/2023-06-18_22h40_47.png)
この例を参考に、ご自分の思い通りな返信メールをお作り下さい。
応用例その8.5(クレジット決済を追加する)
お支払い方法に銀行振込だけでなくクレジット決済も対応した応用例です。
ご参考までにどうぞ。
応用例その9
応用例その11(2つのGASを使って署名活動フォームを作る)
応用例の補足(フォームの選択肢に定員設定を追加する)
次のGAS(updateItems)を使って、フォームの選択肢に定員(人数制限)を付けられます。
今回のGAS(diyReply)と同時に使うことで、フォームの応用がさらに広がります。
複数のGASの同時使用の応用例が『応用例その11』です。
参考にしてください。
応用例の補足2(フォームの回答者数に定員設定を追加する)
次のmultiReplyは、今回のdiyReplyに"フォームの回答者数に定員設定"ができる機能を追加しました。
「質問の選択肢」毎の定員でなく、「回答者数」の定員でよいのなら、とても有用なスクリプトです。
おわりに
GASを組むことで、フォームやスプレッドシートから得られる質問項目と回答項目を、メール文書に加えるのは簡単です。
しかし、それらにない計算値などをメールに加えるには、GASを特別に組み直さなければいけません。
フォームに対して1対1のGASになってしまい、汎用性が失われてしまします。
また、GASで数式を組んでテストをするのは、なかなかに手間がかかります。
そこで、この負担をスプレッドシートの関数側に持っていくために、GASの機能を削りに削ってできたのが今回のdiyReplyです。
GASでは困難な複雑な数式も、スプレッドシートの関数ならトライ&エラーが簡単に行えるため短時間で完成できます。
diyReplyと組み合わせることで、今回の例では合計金額ですが、関数に詳しい方はいくらでも難しい数式で得た値を、メールに表示できます。
ぜひ、自由自在な返信メールをご活用ください。
それでは、また次の記事でお会いしましょう。
コメント
記事を拝見し参考にさせていただいております。
送信元のメールアドレスを変更したい場合、記述はどのようにしたらよろしいでしょうか?
ご教示いただけますと大変助かります。
よろしくお願いいたします。
当ブログをご覧いただきありがとうございます。
ご質問の送信元のメールアドレスの変更ですが、システムの規制上できません。
プログラム内でメール送信のコマンドなどを実行したときの送信者は、プログラムの実行者、あるいはプログラムのオーナーになります。
ですので、Googleフォームは、そのオーナーのGoogleアカウントのメールアドレス(gmail)が使用されます。
代わりにですが、セルB10の返信先アドレスに記入されたアドレス(ReplyTo)は、相手が返信をするときに採用されます。こちらは自由に設定できます。
ご参考になりましたでしょうか。
追記、
Gmailはエリアスをサポートしていますので、任意のメールアドレスでGoogleのSendMailサーバーを使うことができます。オーナーのGmailアドレスにエリアスを設定されている人は、送信元にそのエリアスを指定できます。
その場合は、スクリプトの20行目を、
(変更前)
GmailApp.sendEmail(mailTbl[3],mailTbl[1],mailTbl[2],{cc:mailTbl[4],bcc:mailTbl[5],name:mailTbl[6],replyTo:mailTbl[7]});
(変更後)
GmailApp.sendEmail(mailTbl[3],mailTbl[1],mailTbl[2],{from:'aaa@bbb.co.jp',cc:mailTbl[4],bcc:mailTbl[5],name:mailTbl[6],replyTo:mailTbl[7]})
このようにエリアス(aaa@bbb.co.jp)を追加することで送信元を代えることもできます。
今後、エリアスを使っている人が多いようなら、送信元も設定項目に追加してもよいのかなと思いました。
こんにちは!
お陰様で13個の商品入れ、トリガーもdiyReply、イベントの種類は「フォーム送信時」、「許可」で完了しました。
なんですが、シート1にテスト送信分が流れません。
左から フォームの回答、シート1にしています。
Cloud のログで以下のエラーが出ています。
TypeError: Cannot read properties of null (reading ‘getDestinationId’)
at diyReply(コード:6:43)
ご教授頂けますでしょうか。
どうぞ宜しくお願い致します。
ご質問を拝見したところ、この記事に記載されているサンプルを試されていないご様子ですね。
まずは、この記事のサンプルと全く同じものを作りそれを成功させてから、次のステップへとお進みください。
それを雛形として自分でアレンジを加えてテストを繰り返して、最終的に自分の思うものへと近づけてください。
どんなプログラムでも成功体験は、必ず必要です。
初心者は特にこのステップを省略しないでください。
そうすれば、今回のエラーが発生するはずがないことがわかると思います。
頑張ってください。
そうなんですね。
分かりました!
やってみます!
ご返信ありがとうございます!
無事解決いたしました!
他に見られている方がいらっしゃった場合の事を考えて一応流れを書いておきます。
①こちらのサイトを参考にフォームとGASを設定し自分のアドレスで試したところTEST成功
②他人にTESTしてもらったところ、自動返信がされていいない事を確認
③スプレッドシートを確認したところ、フォームのシートには記入された記録があるが、返信用スプレッドシートには反映されていない状態を確認
④グーグルワークスペースのIDをログイン用のアドレスにしていたため、自分以外に返信できていない事を認知
⑤Kasuga様のご提案により解決
エイリアスの使用に関しては企業ベースで使用されている場合はあるあるな感じだと思われます。
ですので、グーグルフォームを使用するくらいの規模の企業にとっては非常にありがたい解決策だと感じました。
誠にありがとうございました。
N.F LCC様、とても参考になるご返事をありがとうございます。
Gmailのエリアスがすぐにお分かりになるとは流石でございます。
ご参考までに、このエリアスは送信に関しては問題ないのですが、受信(imapやpopでメールを持ってくる)が不安定(時間がとてもかかる)です。
ワンタイムパスワードなどこのエリアスで受けようとして、ひどい目に合いました。ですから、受信に関しては、Gmail側からのimapやpopを使わず、任意アドレス側のサーバーでGmailへの転送設定をすることをおすすめします。
そうですか。エリアスを使う人のことも考えた方がよさそうですね。
折を見て、GASを修正しておきます。
とても参考になりました。ありがとうございます。
はじめまして!
自分がやりたかったことが載っているサイトに来れて、有難く設定させていただきました。
私の知っている関数はSUM計算のみと言う超初心者です。
質問ですが、他の方も書かれていたことで重複し申し訳ありません、
何度やっても上手くできませんのでご教授頂きたいです。
やりたい事は注文がなかった商品は
上がってこない様にしたいです。
①【注文商品】
“&D1&”×”&D2&”個
“&E1&”×”&E2&”個
↓
②【注文商品】
=IF(D2=””,””,”注文商品:”&D1&”×”&D2&”個
“)&IF(E2=””,””,”注文商品:”&E1&”×”&E2&”個
①を②の様に訂正しましたら、エラーがでています。
お忙しいところすみませんが教えていただければ幸いです。
どうぞよろしくお願いします。
当ブログをご覧いただきありがとうございます。
数式を拝見しますと、気になるのが””(全角のダブルクォーテーション)を使われていないかです。関数記号は全て半角英数字ですので、再度確認をして確実に半角の””をお使いください。←初心者の方に多いミスです。
これも記載ミスかもしれませんが、最後に”)が抜けています。
(修正前)
=IF(D2=””,””,”注文商品:”&D1&”×”&D2&”個
“)&IF(E2=””,””,”注文商品:”&E1&”×”&E2&”個
(修正後)
=IF(D2=””,””,”注文商品:”&D1&”×”&D2&”個
“)&IF(E2=””,””,”注文商品:”&E1&”×”&E2&”個”)
※改行は[Ctrl]+[Enter]、或いは、[Alt]+[Enter]
この式をコピペして試してください。うまくいかないようでしたらお知らせくださいね。
早々にお返事を頂き、ありがとうございます。
「””」については半角にしていましたが「:」が全角で、できていませんでした。
ご指摘ありがとうございます。
修正してくだったものをコピペしましたが、
=IF(D2=””,””,”注文商品:”&D1&”×”&D2&”個
“)&IF(E2=””,””,”注文商品:”&E1&”×”&E2&”個”)
このままで送られて来ました。
フォームの質問には
・〇〇商品(@1000)とし
プルダウンで個数を選ぶようにしています。
プルダウンが問題とかありますでしょうか?
それと併せて教えて頂きたいことがあるのですが、
()内の数式に「”注文商品:」があると下記のようになりますでしょうか?
商品数が多いので、例えば10種類の商品中2種類のみを注文の場合
【注文商品】
・〇〇商品(@1000)×個数=金額
・〇〇商品(@2000)×個数=金額
というようにしたいです。
どうぞ宜しくお願い致します。
ちょっと説明不足でした。半角””で囲まれていたら全角のどの様な文字でも問題ありません。ですから””内で全角の:を使うのは問題ありません。
私もうっかりしていたのですが、このコメントに半角の””など特殊記号を使うと全角に自動変換されてしまいます。これは、Wordpress(ブログのシステム)の仕様なのですが、前回のコピペをお願いした関数も全角に変換されていたかもしれません。確認して全角でしたら半角””に直してくださいね。
さて、関数表記のままメールが送られてきたそうですが、スクリプト(GAS)がセル(A1やB1のマス)に表示されているそのままを送るためです。
目で見て=IF(A1~~~などのように表示されていたらそのままの表示が送られます。
[Ctrl]+@キーで関数表示と結果に切り替わるので気をつけてください。関数がそのまま表示されていたらもう一度[Ctrl]+@で切り替えてください。
ご希望の関数ですが、次のような感じでよいのではないでしょうか。今回は半角が全角に変換されないようにしましたのでそのままコピペできると思います。
="【注文商品】"&CHAR(10)&IF(D2="","",D1&"×"&D2&"個="&TEXT((1000*D2),"#,##0")&"円"&CHAR(10))&IF(E2="","",E1&"×"&E2&"個="&TEXT((2000*E2),"#,##0")&"円"&CHAR(10))&IF(F2="","",F1&"×"&F2&"個="&TEXT((3000*F2),"#,##0")&"円"&CHAR(10))
この関数では、見やすくするために、改行にCHAR(10)を使っています。[Ctrl]+[Enter]でもよいのですが、関数のサンプルではこの方が分かりやすいかもしれませんね。覚えておいて良いと思います。
このサンプルでは、D,E,Fの3つですが、G,H,~と好きなだけ追加してください。
シートの関数のよいところは、テストが簡単にできることです。フォームからわざわざ回答を送信しなくても、D1やD2などを自分で直接に値を変えてテストしてくださいね。満足な表示ができたらフォームから回答を送信してテストするとよいですよ。念のため。
今度はうまくいくとよいですね。
沢山、ご教授を有難うございます。
そうですね、前回のサンプルで”が全角になっていましたね。そういう事でしたか!難しいですね…。
さて、また問題なのですが、何度もすみません。
①目で見て=IF(A1~~~なので、[Ctrl]+@をしてからコピペをしたのですが、切り替わらずエラーがでます。
②CHAR(10)で作って下さってるのに、改行にはならず…。
[Ctrl]+@をするタイミングが良くないですか?
(G,H,~と好きなだけ追加)はとても助かります!感謝です。
むむむ、なかなかに手強いですね。
でもご安心ください。この関数は、私の方でテストしていますので、問題はありません。
そちらのキー配置が私のと違う可能性があります。まず、セルに関数をコピペしてください。
![](https://terihat.com/wp-content/uploads/2024/09/2024-09-03_17h54_40.png)
次の図のように数式のチェックを外してください。これで試してみましょう。
有難うございます
はい!外しました!
まだ変わりなくエラーです。
う~んこれは……関数に全角文字が渡されたのかも……?
セルに表示されるエラーは、#VALUE!ですか?
セルの右上角の赤三角にカーソルを合わすとエラーの説明が表示されると思いますが、何と書いてありますか?
数式の解析エラーです。
それは関数が間違っているエラーですね。なにか変な文字が入っているのかな…?
もう一度、セルをクリアして、次の関数式をコピペしてください。
="【注文商品】"&CHAR(10)&IF(D2="","",D1&"×"&D2&"個="&TEXT((1000*D2),"#,##0")&"円"&CHAR(10))&IF(E2="","",E1&"×"&E2&"個="&TEXT((2000*E2),"#,##0")&"円"&CHAR(10))&IF(F2="","",F1&"×"&F2&"個="&TEXT((3000*F2),"#,##0")&"円"&CHAR(10))
まだ同じエラーが出ますか?
コピーされた関数式をじ~っと見て、間違いがないかよく見てください。ひょっとして半角”が全角”になっていないでしょうか?
最後に変な(や”が追加されていませんか?
間違い探しですね!
すみません、全角と変な文字はないか見ましたが、また同じエラーです。
改行もされないです。私の方の改行されていない数式を見ていただこうとこちらにコピペしましたら、ちゃんと改行されます。
文字色ですが、【注文商品】、個、#,##0は黒色で、D2やE2は紫や水色、それ以外の文章は全て緑色です。
最後の住所…27-1としていますがその後に消しても消しても”がつきます。
何かわかればと思い、記させて頂きました。
よろしくお願い致します。
このコメントにあなたの数式をコピペされたのですか?ちょっと載っていないようなのですが……。
ひょっとしてですが、私が作成した数式をそのままでなく弄ってテストしていますか?
もしそうであるなら、セルB5の本文の数式を私の方で見ましょうか?
このコメントの返信にコピペしていただければ、確認できますがいかがでしょうか?
有難うございます!
お言葉に甘えまして…。
宜しくお願い致します。
=C2&”様
この度は籽清ZIQINGをご利用頂きまして
誠にありがとうございます。
━━━━━━━━━━━
=”【注文商品】”&CHAR(10)&IF(D2=””,””,D1&”×”&D2&”個=”&TEXT((1000*D2),”#,##0″)&”円”&CHAR(10))&IF(E2=””,””,E1&”×”&E2&”個=”&TEXT((2000*E2),”#,##0″)&”円”&CHAR(10))&IF(F2=””,””,F1&”×”&F2&”個=”&TEXT((3000*F2),”#,##0″)&”円”&CHAR(10))
【合計金額】”&TEXT((10500*D2+3500*E2),”#,##0″)&”円
━━━━━━━━━━━
【お支払方法】
・のちほどお送り致します請求書に沿って
海外送金をお願い致します。
・振込手数料につきましては別途ご負担wo願います。(インターネットからのお手続きが便利でお得です)
・入金確認後、発送準備を進めて参ります。
━━━━━━━━━━━
Mai:ziqing@gmail.com
籽清ZIQING(シーズジックイーン)
659-○○
○○27-1″
了解です。
エラー処理とスタイルを整えただけです。計算式等はそのままです。
=C2&"様
この度は籽清ZIQINGをご利用頂きまして
誠にありがとうございます。
━━━━━━━━━━━
【注文商品】
"&IF(D2="","",D1&"×"&D2&"個="&TEXT((1000*D2),"#,##0")&"円
")&IF(E2="","",E1&"×"&E2&"個="&TEXT((2000*E2),"#,##0")&"円
")&IF(F2="","",F1&"×"&F2&"個="&TEXT((3000*F2),"#,##0")&"円
")&"【合計金額】"&TEXT((10500*D2+3500*E2),"#,##0")&"円
━━━━━━━━━━━
【お支払方法】
・のちほどお送り致します請求書に沿って
海外送金をお願い致します。
・振込手数料につきましては別途ご負担wo願います。(インターネットからのお手続きが便利でお得です)
・入金確認後、発送準備を進めて参ります。
━━━━━━━━━━━
Mai:ziqing@gmail.com
籽清ZIQING(シーズジックイーン)
659-○○○○27-1"
コピペでお試しください。
今度は、#VALUE!がでました。内容は関数限【 MULTIPLY のパラメータ 2 の値は 数値 にしてください。テキスト が「○○@ymobile.ne.jp」になっているので、数値 にできません。】です。
この「○○@ymobile.ne.jp」は質問の宛先F2入ってくるもので、TO=F2にしています。
この後、CCには、店のアドレス、NAMEには店名を手入力しています。
本当に手を取らせてすみません。
どうぞ宜しくお願い致します。
#VALUE!になりましたね。進歩しました。
セルのF2は使われていたんですね。サンプルは商品をE~Fにしていましたので、Fを削除しました。
あと、フォームで商品数をプルダウンから選ぶ時の数値は、必ず半角の数字だけでお願いしますね。
=C2&"様
この度は籽清ZIQINGをご利用頂きまして
誠にありがとうございます。
━━━━━━━━━━━
【注文商品】
"&IF(D2="","",D1&"×"&D2&"個="&TEXT((1000*D2),"#,##0")&"円
")&IF(E2="","",E1&"×"&E2&"個="&TEXT((2000*E2),"#,##0")&"円
")&"【合計金額】"&TEXT((10500*D2+3500*E2),"#,##0")&"円
━━━━━━━━━━━
【お支払方法】
・のちほどお送り致します請求書に沿って
海外送金をお願い致します。
・振込手数料につきましては別途ご負担wo願います。(インターネットからのお手続きが便利でお得です)
・入金確認後、発送準備を進めて参ります。
━━━━━━━━━━━
Mai:ziqing@gmail.com
籽清ZIQING(シーズジックイーン)
659-○○○○27-1"
これでご確認ください。
感動です!!!できました!!!
あつかましくも完成するまでお付き合いを頂き有難うございました。
#VALUE!はまだいいことなのですね。
独学でボツボツと始めてまして
還暦にして、一人でできたら自信になると思いましたが、ほぼして頂いて…。
これから、TOに気を付けながら商品を増やしていきます。
勉強になりました!有難うございました。
おめでとうございます。
初心者にしてはよく対応できていると思います。関数はトライ&エラーを繰り返してこそ成長します。
ご助言をさせていただくなら、長い数式は部分ごとに分けて、それぞれを別のセルでテストしてから、最後に全体をつなげるようにすると、より効率的にテストができますよ。
あなたの数式がきっと誰かの役に立つと思いますので、今回はありがとうございました。
おはようございます。
数を合わせてもやっぱり新しい回答が飛んでくると、前の人にメールが行っちゃうようなので、とりあえず最初に言われたとおり、全てクリアして行も全部削除してやってみます。
おはようございます。
そうですか~、実はフォームとシートの回答数の数合わせで検証したことがないもので、不確実な情報ですみません。
フォームの回答数とシートの回答数が同じだと問題がないと思っていたのですが……いつか私も試してみますね。
貴重な情報をありがとうございました。
なるほど!
勉強になります^ ^
ありがとうございます。
やってみます!
また聞きたいことあればコメントするので、その時はご教授くださいm(_ _)m
返信ありがとうございます!
では、フォームの回答が13ならば、シートの回答も13であれば問題はないということですか?
いろいろテストしたりして、フォームの回答も消したり、シートもテストのものが間に挟まったりして、そこを削除して行を詰めて同じ13に合わせたら大丈夫ですか?
フォームの回答が13でしたら、次の送信で回答が書かれる行が14行目(タイトル行があるため+1です)になるはずです。確か…
ここら辺を抑えておけば、うまく扱えると思いますよ。
あっ、それとシートの回答行と回答行の間に空白行を入れないでくださいね。これは、私の例題の関数COUNTIFが空白でない行をカウントしているので、お気付けください。
このまんまコピペで使用していますが、質問フォームから送信すると、たった今送信した人ではなく、前回の最終行の人がそのままシート1に反映されてメールが行っちゃいます。
(BCCに私のアドレスを入れたから判明しました)
コードを開いて、『実行』を押すと最終行の人のが新たにシート1に反映されて返信メールできるようになりますが、毎回それだと、1人2回ずつメールが送らさる感じになっています。
①最初にフォームから送信した時は前回の人(仮Aさん)にメールがいく
②コードから実行と押せば今送信した人(Bさん)にメールがいく
③次にフォームから送信した人にはメールがいかず、前回送信した人(Bさん)にメールが行く
どうしてかわかりますか?
当ブログをご覧いただきありがとうございます。
あ~、これは、フォームとシートの回答数がズレているからだと思います。
今は手元にフォームを実行する環境がないので、メニュー項目などを詳しく説明できないのですが...。
まず、フォームとシートの同期はフォームからの一方向だと言うことを覚えておいてください。
例えば、シートの回答を削除しても、フォームの回答は削除されないということです。
フォームの回答を見て「3件の回答」となっていたとき、シートの回答数も3件なら問題ないのですが、シートの回答を削除したり弄ってしまってもフォームとは同期されませんので、ここは手動で合わせなければなりません。
一番良いのは、フォームの回答を「︙」から「すべての回答を削除」でクリアして、シートの回答の行を削除して、最初から始めることでしょう。
記事を参考にさせていただきました。
スクリプトをコピペし、スプシのシート2のB3〜B10に返信内容を納めているのですが、メールが飛びません。。
回答内容からVLOOKUPで検索した内容を返信メールに掲載したく、
VLOOKUPの検索ようにシートをもう2枚追加しております。
こちらが原因でしょうか。
ご教示いただけると幸いです。
当ブログをご覧いただきありがとうございます。
う~ん、確認ですけど…トリガーは大丈夫ですよね? あと、B3~B10を設定しているシートのタブの位置は左から2番目になっていますか?
このシートの位置を例えば、左から3番目にする時は、diyReply(2)と引数を入れてシートの位置の指示が必要です。
ご返信ありがとうございます!
トリガーも掲載頂いている通りに設定しておりますが、今確認したところエラー100%になっていました・・
メールを設定しているシートも左から2番目で間違いありませんmm
もしかしてですが、スクリプトの冒頭
function diyReply(SheetNo) {
↓
function diyReply(1) {
にしないといけないのでしょうか?
実行ログを見ると、
Exception: Gmail operation not allowed. : Mail service not enabled
diyReply @ コード.gs:20
と表示されます。他に設定すべき箇所があるのでしょうか・・・
スクリプトのメールを送る段階で権限で弾かれていますね。ログのメッセージからは権限が付与されていないと読めますね。
また確認ですが、スクリプトを保存するときとか、トリガーをセットするときに承認は求められませんでしたか?
※承認を求められたら、「Advanced」(あるいは、「詳細」)→「Go to ~~(Unsafe)」(あるいは、「~~に移動」)→「Allow」(あるいは、「許可」)
いいえ、シートの位置が左から2番目でしたら、そのままでよいです。SheetNoは、指定しないと1になります。
問題は別にありますね。
一番最初に承認を求められたので許可しています・・
会社のアドレスでやっているので、なんらかのセキュリティシステムが働いてる可能性はありますか・・?
どうでしょう?セキュリティの問題は、私の方で再現できないのでなんとも言えないのですね。
その会社のアドレスは、多量のメールを送ったりしますか?そうであるなら何か制限がかかっている可能性もありますね。
取り敢えず可能でしたら、ご自分のGoogleアカウントで同じフォームを作ってテストするのが良いかもしれません。
自分のアカウントで試したら飛びました!!ありがとうございます!!
もう1点、分かればでよいのですが、
現状メールの本文が改行されない状態で送られてしまっていまして、改行コードなどありましたらご教示いただけますと幸いですmm
おめでとうございます。
セルの中での改行は、[Ctrl]+[Enter]、あるいは[Alt]+[Enter]で改行できます。
文章の改行したい位置で[Ctrl]+[Enter]キーを入力して、そのまま文章を続けてください。
私の例文の改行箇所には、[Ctrl]+[Enter]が入っているのですよ。
ちなみに関数CHARを使うと、次のようになります。
=”◯△◇様、”&CHAR(10)&”お世話になります。”
CHAR(10)で改行できました!ありがとうございます!
とても参考になりましたmm
Nice to haveですが、回答修正のリンクも入れられるともっと便利になりそうですね!
また参考にさせていただきます!
記事拝見させていただき設定させていただきました。
例えば、個数選択されていない商品項目の項目名は自動メールでは非表示にすることはできるのでしょうか?
当ブログをご覧いただきありがとうございます。
非表示にできるとお答えします。なぜならスプレッドシートの関数の問題なので大概のことはできるからです。
具体例ですと、C2にフォームからの回答の商品個数が入るとして、本文中に、&IF(C2=0,””,”商品:”&C2&”個”)などようにIFを使うなどすればよいのではないでしょうか?
ご教示ありがとうございます。
知識が無いもので、理解が追い付かず申し訳ございません。
例えば、H1に商品名とH2に注文個数が飛んできます。
下記の【現在の設定】だと、H2が空欄だったとしても注文確定メールには『商品× 個』で表示されています。
H2が空欄の商品は注文確定メール上で非表示にしたいです。
下記の【現在の設定】の場合、本文のどこに&IF(C2=0,””,”商品:”&C2&”個”)をいれればいいのでしょうか。
【現在の設定】
注文商品:
“&H1&”×”&H2&”個
注文者:”&I2&”
“&J1&”×”&J2&”個
注文者:”&K2&”
お手すきの際にご教示いただけますと幸いです。
なるほどなるほど、なさりたいことが理解できました。
本文のセルに次の様な形式で対応できると思います。
セルの中での改行は[Ctrl]+[Enter]、あるいは[Alt]+[Enter]をお忘れなく。
=IF(H2=””,””,”注文商品:”&H1&”×”&H2&”個
注文者:”&I2&”
“)&IF(J2=””,””,”注文商品:”&J1&”×”&J2&”個
注文者:”&K2)