PR

Googleフォームから自動で返信メール~自由度の高いメールでクレジット決済に対応

Google Workspace

Googleフォームから商品をいくつか選んで、その合計金額をクレジットで決済する。

そのような難しい処理も、ここで紹介するGAS(diyReplay)とスプレッドシートの関数、そして決済型メールリンクを使うと簡単にできます。

次の記事からの続きになります。今回も使用するdiyReplyについて詳しく説明しています。

diyReply

今回はクレジット決済のため、Squareの「お会計リンク」を使用します。
これを使うためには、Squareへの登録(無料)が必要です。
次の記事に登録方法について詳しく説明しています。

スポンサーリンク

応用例その8.5

フォームより入力された項目には価格があり、その合計金額と支払い方法を返信メールに表示するとします。

そして支払い方法(クレジット決済と銀行振込)に応じて返信メールの文章も変更するとします。

フォーム

次のようなフォームを作ります。

注文商品(価格あり)の個数をプルダウンのメニューから選ぶフォームです。

また、支払い方法に「クレジット決済」「銀行振込」のどちらかを選べるようにします。

名前:商品購入者の名前
メールアドレス:返信メールのアドレス
注文商品1(1,500円/個):注文個数(1~5)
注文商品2(2,500円/個):注文個数(1~5)
住所:購入商品の送り先です。
お支払い方法:「クレジット決済」「銀行振込」のどちらかを選びます。

スプレッドシート

スプレッドシートにリンクします。

diyReplyを使った返信メールのために、シート1を次のように作ります。

数式表示[Ctrl]+@しています。

セルB3~B12が、diyReplyで使用されます。

  • 1行目(C1~H1)には、質問の①②③④⑤⑥を入れます。(必要なら好きな言葉に替えます)
  • 2行目(B2~H2)には、フォームからの回答が入ります。
  • B3OFF(半角)を入れるとメールを送りません。(文章作成時のテスト時に使えます。)
  • B4返信メールの件名を入れます。ここでは、=C2を入れます。
  • B5返信メールの本文を入れます。ここでは、=D2を入れます。
  • B6返信メールの宛先を入れます。ここでは、=E2を入れます。
  • B7:必要なら、CC:を入れます。複数の場合は、aaa@gmail.com, bbb@gmail.comのように,で区切ってください。
  • B8:必要なら、BCC:を入れます。複数の場合は、aaa@gmail.com, bbb@gmail.comのように,で区切ってください。
  • B9:必要なら、送信元(自分)の表示名を入れます。
  • B10:必要なら、返信先アドレスを入れます。
  • B11(New!):必要なら、送信元アドレスを入れます。
    送信元アドレスには、Googleアカウント(Gmailアドレス)のエイリアスをご利用ください。
    (※権限のないメールアドレスでは、送信できませんのでご注意ください。)
  • B12(New!):ON(半角)を入れるとC12に回答編集用のURLを表示します。
  • C5(空いているセルならどこでもよい)回答「クレジット決済」用のメール文章
  • D5(空いているセルならどこでもよい)回答「銀行振込」用のメール文章

シート1の内容をテーブル(コピペ用)に表示します。
※セル内の改行コードがコピーされないときは、コピペ後に必要な箇所で改行コード([Ctrl]+[Enter]キー)を入力してください。

質問タイムスタンプ名前メールアドレス注文商品1(1,500円/個)注文商品2 (2,500円/個)
最新の回答
OFF:
メールを送らない
件名ご注文承りました
本文=IFS(H2="クレジット決済",C5,H2="銀行振込",D5)=C2&" 様、
ご注文をありがとうございます。
-------------------------------
注文商品:
"&E1&"×"&E2&"個
"&F1&"×"&F2&"個
合計金額:"&TEXT((1500*E2+2500*F2),"#,##0")&"円
-------------------------------

次のクレジット決済用URLをクリックして、表示された画面にお買い上げ合計金額を入力して決済いただくようお願いいたします。

クレジット決済用URL:https://square.link/u/o1ejxxPZ

決済が確認でき次第、商品を発送いたします。

またのご利用をお待ちしております。"
=C2&" 様、
ご注文をありがとうございます。
-------------------------------
文商品:
"&E1&"×"&E2&"個
"&F1&"×"&F2&"個
合計金額:"&TEXT((1500*E2+2500*F2),"#,##0")&"円
-------------------------------

お買い上げ合計金額を、以下の口座にお振込いただくようお願いいたします。

店番:XXXXXX
預金種類:XXXXXX
口座番号:XXXXXX
口座名義:XXXXXX
ご入金が確認でき次第、商品を発送いたします。

またのご利用をお待ちしております。"
TO:=D2
CC:(省略可)
BCC:(省略可)
NAME:(省略可)〇〇商店
REPLY TO:(省略可)
シート1
表計算が得意な人には何でもない関数ですが、セル内に文章を書くのは不慣れな人が多いのではないでしょうか。
"文字列"(ダブルクォーテーションで挟まれた文字列)とセルの数値(C2など)を、&(半角)でつなぎながら文章を書くのは慣れないと少し難しいかもしれません。
コツは最初に"を付けてから、一気に文章を書きあげて最後に"で閉じます。
この時、改行([Ctrl]+[Enter]キー)も気にせずに使います。
それから必要な箇所を"&※※&"に置き換えていきます。(※※は、A1、B2など)

ここで特記することは、IFS関数を使ってフォームからの回答で、メールの文章を選択しています。

返信メールの文章のセルB5は、質問「お支払い方法」の回答でセルC5、セルD5のどちらかの文章になります。

=IFS(H2="クレジット決済",C5,H2="銀行振込",D5)

もしセルH2(お支払い方法)の値が、"クレジット決済"ならセルC5の文章、もしH2の値が"銀行振込"ならセルD5の文章を表示します。

GAS

GAS(diyReply)を登録します。スクリプトエディタを開きます。

次のGAS(diyReplay)をエディタへコピペします。

  1. function diyReply(SheetNo) {
  2.   // 引数SheetNo:設定用シートのタブの位置(一番左のシートが0、2番目が1、3番目が2…)
  3.   if(!(SheetNo > 1)) SheetNo = 1;
  4.   // アクティブフォーム
  5.   const form = FormApp.getActiveForm();
  6.   // 設定用シート(2枚目のシート)
  7.   const mailSheet = SpreadsheetApp.openById(form.getDestinationId()).getSheets()[SheetNo];
  8.   // 最新の回答を配列に取得
  9.   const latestItems = form.getResponses().pop();
  10.   const answerItems = latestItems.getItemResponses().map(item => item.getResponse());
  11.   answerItems.unshift(latestItems.getTimestamp()); // タイムスタンプを追加
  12.   // 回答を設定用シートにセット
  13.   mailSheet.getRange(2, 2, 1, answerItems.length).setValues([answerItems]); SpreadsheetApp.flush() // sync;sync;sync
  14.   // B12がONなら編集リンクを設定用シートにセット
  15.   mailSheet.getRange('C12').setValue(mailSheet.getRange('B12').getValue() === 'ON' ? latestItems.getEditResponseUrl() : ""); SpreadsheetApp.flush() // sync;sync;sync
  16.   // 設定用シートの項目(セル:B3-B11)を配列に取得
  17.   const mailTbl = mailSheet.getRange('B3:B11').getDisplayValues().flat();
  18.   // B11が空白ならアクティブユーザーのメールアドレスを使用
  19.   if(!mailTbl[8]) mailTbl[8] = Session.getActiveUser().getEmail();
  20.   // B3がOFF以外はメールを送信
  21.   if (mailTbl[0] !== 'OFF')
  22.     GmailApp.sendEmail(mailTbl[3], mailTbl[1], mailTbl[2], {from: mailTbl[8],cc: mailTbl[4],bcc: mailTbl[5],name: mailTbl[6],replyTo: mailTbl[7]});
  23. } // Ver2.2.0 for maintenance

↓ ↓ コピペ ↓ ↓ (保存を忘れずに!)

トリガー

トリガーを追加します。

イベントの種類の選択は、「フォーム送信時」を選びます。

※承認を求められたら、「Advanced」(あるいは、「詳細」)→「Go to ~~(Unsafe)」(あるいは、「~~に移動」)→「Allow」(あるいは、「許可」)

動作テスト

フォームを実行(プレビュー)して、回答、そして送信します。

結果、シート1に次のように表示されています。

回答に「クレジット決済」を選択したので、セルB5にセルC5が表示されています。

合計金額とクレジット決済用URLが表示された返信メールが送られてきました
シート1の名前(NAME:)で記した○○商店も表示されています。

クレジット決済用URLをクリックします。

次のような画面が表示されます。

お買上げ合計金額を入力し「お会計」をクリックします。

クレジット決済の画面が表示されます。

必要情報を入力し「支払い ¥10,500」をクリックするとクレジット決済が完了します。

ちなみに「銀行振込」を選択すると、次のメールが届きます。

以上です。

おわりに

Googleフォームを使った注文や申し込みで、支払いまで対応できないかと相談を受けて、GASを使った汎用性のあるものに挑戦しましたが、結局は無理でした。

ネット注文などは、それに対応した支払いサービスがあるので勧めましたが、Googleフォームに慣れているのとスプレッドシートでの管理が便利なので、それをやめたくないとのことでした。

今回は、Squareの「お会計リンク」を使って、Googleフォームにクレジット決済を導入しました。

苦肉の策で導入したこの「お会計リンク」でしたが、使ってみると何かと便利です。

メールだけでなくSMS(ショートメール)、LINE、X(旧Twitter)、Facebook、Instagram、ブログなどにも使えます。ブログだと「ボタン」で表示もできます。

↓このような感じです。※クリックしても、すぐの支払いにならないのでご安心ください。

Googleフォームでイベント参加や商品販売などの料金回収が必要な場合、会場での現金支払いや銀行振込だけでなく、できるだけ多くの料金回収手段があるとフォームの開発の幅が広がるので、今はこの方法も採用しています。

Squareに登録(無料)して、いつでもクレジット決済ができるようにしておくことは、お勧めします。(※維持費も無料)

決済代行会社の審査もいつ厳しくなるかわからないです。持っていてもただですから早めがいいですよ。

イベント会場や現地販売など、その場でのキャッシュレス決済が必要なときは、次のサービスが非常に便利です。端末費用が0(ゼロ)円のサービスを実施していますので、今は一番オトクです。

PayCAS Mobile|キャッシュレス端末の本申込み

それでは、またの機会にお会いしましょう。

コメント

タイトルとURLをコピーしました