彰化一整天的論壇

 找回密碼
 立即註冊
樓主: imingho

【Google表單教學】如何讓Google表單送出時會自動寄送購買...

[複製鏈接]
發表於 2019-6-12 00:09:35 | 顯示全部樓層
imingho 發表於 2019-6-11 23:46
您好,
    請用底下程式碼執行看看.price是您輸入後的結果
field是欄位名稱


老師您好
"price是您輸入後的結果field是欄位名稱 ".這個有點看不太懂...
我直接複製老師您的貼上後只會顯示選購買項目,金額並不會顯示在總金額裡,

上組已含運加購下組應為免運了,卻還是把運費列入計算了
感謝老師解惑
如下顯示

快速選購區(價格含運):64杯 $3200
單點區 (運費另計) [ 魚肉A款]:1
單點區 (運費另計) [ 魚肉B款]:1
您購買200元
運費:160元
總費用為360元
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-6-12 01:14:06 | 顯示全部樓層
Alice 發表於 2019-6-12 00:09
老師您好
"price是您輸入後的結果field是欄位名稱 ".這個有點看不太懂...
我直接複製老師您的貼上後只會 ...

"price是您輸入後的結果field是欄位名稱 ".這個有點看不太懂..
這個我看錯了.您不用理它,都是欄位名稱.
我原本的程式都是數量,因為您的含運的寫法是名稱加$號,所以要另外處理。
shop_20190611c.jpg

1.執行結果

  1. function autoSendmail(data) {
  2.   var subject = "吮指食堂快速訂購單 表單自動通知", // 信件標題
  3.       emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
  4.       namedValues = data.namedValues,
  5.       values=data.values,      
  6.       notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
  7.       html = "";
  8.   
  9.   //設定產品價格
  10.   var price={"[試吃組 16杯  $900]":900," [32杯 $1700]":1700," [48杯 $2500]":2500,"[64杯 $3200]":3200,"(價格含運) [80杯 $3900]":3900,"單點區 (運費另計) [豬肉A款]":90,"單點區 (運費另計) [豬肉B款]":90,"單點區 (運費另計) [ 雞肉A款]":90,"單點區 (運費另計) [ 雞肉B款]":90,"單點區 (運費另計) [牛肉A款]":100,"單點區 (運費另計) [牛肉B款]":100,"單點區 (運費另計) [ 魚肉A款]":100,"單點區 (運費另計) [ 魚肉B款]":100,};
  11.   var money=0;
  12.   
  13.   var free_shipping_money=99999; //設定免運費金額
  14.   
  15.   var freight=160;//設定運費金額
  16.   
  17.   var n=data.values.length;
  18.   
  19.   var fields="";
  20.   
  21.   var field=["時間戳記","電子郵件地址","訂購者姓名","訂購者聯絡電話(09xx-xxx-xxx)","收件者姓名","收件者聯絡電話(09xx-xxx-xxx)","郵遞區號","收件地址","收件時段","快速選購區(價格含運)","單點區 (運費另計) [ 雞肉A款]","單點區 (運費另計) [豬肉B款]","單點區 (運費另計) [ 雞肉A款]","單點區 (運費另計) [ 雞肉B款]","單點區 (運費另計) [牛肉A款]","單點區 (運費另計) [牛肉B款]","單點區 (運費另計) [ 魚肉A款]","單點區 (運費另計) [ 魚肉B款]","其他備註(ex:不吃牛)","付款方式","帳號末五碼"]
  22.   
  23.   var d="";
  24.   
  25.   var i,j;
  26.   
  27.   
  28.   for (i = 0; i < n; i++) {
  29.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  30.     if(v!="")//有輸入的資料才顯示
  31.     {
  32.       html+=field[i]+":"+v+"<br/>";
  33.       if(price[field[i]]!=undefined) //有價格才計算
  34.         money+=price[field[i]]*v;         
  35.      }
  36.   }
  37.   

  38.   var free_shipping_thing=namedValues["快速選購區(價格含運)"] ? namedValues["快速選購區(價格含運)"][0]:""; //設定免運商品
  39.   
  40.   

  41.   //取出$字串後面的價格
  42.   if(free_shipping_thing!='')
  43.   {
  44.      var n = free_shipping_thing.indexOf("$");
  45.      var m=free_shipping_thing.substring(n+1);
  46.      money+=parseInt(m,10);//將文字轉成數字
  47.   }
  48.   
  49.   
  50.   html+="您購買"+money+"元<br/>";
  51.   
  52.   if(money<free_shipping_money && free_shipping_thing=="") //未達金額且沒有選擇含運費商品則加運費
  53.   {
  54.     money+=freight
  55.     html+="運費:"+freight+"元<br/>";
  56.   }
  57.   else
  58.   {
  59.     html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  60.   }
  61.    
  62.   

  63.   
  64. }
複製代碼





回復 支持 反對

使用道具 舉報

發表於 2019-6-12 02:23:06 | 顯示全部樓層
imingho 發表於 2019-6-12 01:14
"price是您輸入後的結果field是欄位名稱 ".這個有點看不太懂..
這個我看錯了.您不用理它,都是欄位名稱.
我 ...

謝謝老師!!!但是
字串常值沒有結尾。 (第 46 行,檔案名稱:程式碼)

感覺終於快看到盡頭了再次萬分感謝老師出手相助
回復 支持 反對

使用道具 舉報

發表於 2019-6-12 07:25:00 | 顯示全部樓層
Alice 發表於 2019-6-12 02:23
謝謝老師!!!但是
字串常值沒有結尾。 (第 46 行,檔案名稱:程式碼)

程式碼已修正,麻煩您再試看看.
回復 支持 反對

使用道具 舉報

發表於 2019-6-12 17:16:03 | 顯示全部樓層
tsaimh 發表於 2019-6-12 07:25
程式碼已修正,麻煩您再試看看.

謝謝老師! 全部測試過一遍了都沒有問題了~
真的很感謝老師您的幫忙(鼎王式鞠躬)
回復 支持 反對

使用道具 舉報

發表於 2019-6-13 00:22:42 | 顯示全部樓層
tsaimh 發表於 2019-6-12 07:25
程式碼已修正,麻煩您再試看看.

老師對不起又是我....
我想請教一下為什麼我的回條內容文字顏色會不同呢?
有辦法統一成黑色嗎?
謝謝老師
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-6-13 08:54:07 | 顯示全部樓層
Alice 發表於 2019-6-13 00:22
老師對不起又是我....
我想請教一下為什麼我的回條內容文字顏色會不同呢?
有辦法統一成黑色嗎?

不太懂,可以貼圖說明嗎?
回復 支持 反對

使用道具 舉報

發表於 2019-6-21 14:07:05 | 顯示全部樓層
本帖最後由 miahu123 於 2019-6-21 15:03 編輯

老師您好
我努力研究了,也參考了您po的其他的程式碼,但還是好奇怪
以下是我的程式碼
function autoSendmail(data) {
  var subject = "冷凍宅配測試 表單自動通知", // 信件標題
      emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
      namedValues = data.namedValues,
      values=data.values,      
      notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
      html = "";
  
  //設定產品價格
  var price={"東橋一號(迷你)60元":60,"巧克力核桃(迷你)60元":60,"栗子65元":65,"伯爵紅茶65元":65,"雜糧吐司75元":75,"東橋吐司一條120":120,"藍莓":85,"玉米奶油":85,"墨魚起司":95,"爆漿黃豆麵包":55};

  var money=0;
  
  var free_shipping_money=3000; //設定免運費金額
  
  var freight=160;//設定運費金額
  
  var n=data.values.length;
  
  var fields="";
  
  var field=["時間戳記","電子郵件地址","東橋一號(迷你)60元","巧克力核桃(迷你)60元","栗子65元","伯爵紅茶65元","雜糧吐司75元","東橋吐司一條120","藍莓","玉米奶油","墨魚起司","爆漿黃豆麵包","購買者姓名","連絡電話","電子郵件地址","寄送地址","指定配送時間","其他"]
  
  var d="";
  
  var i,j;
  
  
  for (i = 0; i < n; i++) {
    v= namedValues[field] ? namedValues[field][0]:""
    if(v!="")//有輸入的資料才顯示
    {
      html+=field+":"+v+"";
      if(price[field]!=undefined) //有價格才計算
        money+=price[field]*v;         
     }
  }
  
html+="您購買"+money+"元";
   
  { html+="運費:免費(滿"+free_shipping_money+"元)";
   
  html+="總費用為"+money+"元";

  html+="-----轉帳匯款資訊------------<br/>";
  html+="銀行名稱:台北富邦銀行(代碼:012)<br/>";
  html+="分行名稱:建成分行<br/>";
  html+="戶名:XXXXXXXX<br/>";
  html+="帳號:00000-11111<br/>";
            
  MailApp.sendEmail({
    to: notifyEmail,
    subject: subject,
    htmlBody: html
  });
  
}
function test()
{
    var sheet =SpreadsheetApp.getActiveSheet();
   
    Logger.log(sheet.getSheetValues(1,1,1,1));   
  
}



但收到的信件,還是黏在一起
時間戳記:2019/6/21 下午 1:30:38電子郵件地址:XXXXXX@hotmail.com東橋一號(迷你)60元:2巧克力核桃(迷你)60元:2栗子65元:3伯爵紅茶65元:3雜糧吐司75元:1爆漿黃豆麵包:5購買者姓名:加薪連絡電話:25551111電子郵件地址:XXXXX@hotmail.com寄送地址:東京都豐島區指定配送時間:13時前您購買980元
運費:160元
總費用為1140元
-----轉帳匯款資訊------------銀行名稱:台北富邦銀行(代碼:012)分行名稱:建成分行戶名:XXXXXX帳號:000000-111111
能否讓它變成以下這樣呢
時間戳記:2019/6/21 下午 1:30:38
電子郵件地址:XXXXX@hotmail.com
東橋一號(迷你)60元:2
巧克力核桃(迷你)60元:2
栗子65元:3
伯爵紅茶65元:3
雜糧吐司75元:1
爆漿黃豆麵包:5
購買者姓名:加薪
連絡電話:25551111
電子郵件地址:XXXXXX@hotmail.com
寄送地址:東京都豐島區
指定配送時間:13時前
您購買980元
運費:160元
總費用為1140元
----轉帳匯款資訊-----------
銀行名稱:台北富邦銀行(代碼:012)
分行名稱:建成分行
戶名:XXXXXXXX
帳號:00000-111111
匯款完成後請回信,覆上轉帳帳號後五碼
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-6-21 15:14:29 | 顯示全部樓層
本帖最後由 imingho 於 2019-6-21 16:10 編輯
miahu123 發表於 2019-6-21 14:07
老師您好
我努力研究了,也參考了您po的其他的程式碼,但還是好奇怪
以下是我的程式碼


原本張貼程式碼的網頁,<br/>會不見,要複製底下第二個程式碼,因為太多人copy錯,所以才會在論壇張貼文章,就不會有這個問題。

send_mail_20190621_01.jpg

1.黃色的<br/>變成換行.

send_mail_20190621_02.jpg

2.第二段的程式碼才是正常的.





  1. function autoSendmail(data) {
  2.   var subject = "冷凍宅配測試 表單自動通知", // 信件標題
  3.       emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
  4.       namedValues = data.namedValues,
  5.       values=data.values,      
  6.       notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
  7.       html = "";
  8.   
  9.   //設定產品價格
  10.   var price={"東橋一號(迷你)60元":60,"巧克力核桃(迷你)60元":60,"栗子65元":65,"伯爵紅茶65元":65,"雜糧吐司75元":75,"東橋吐司一條120":120,"藍莓":85,"玉米奶油":85,"墨魚起司":95,"爆漿黃豆麵包":55};

  11.   var money=0;
  12.   
  13.   var free_shipping_money=3000; //設定免運費金額
  14.   
  15.   var freight=160;//設定運費金額
  16.   
  17.   var n=data.values.length;
  18.   
  19.   var fields="";
  20.   
  21.   var field=["時間戳記","電子郵件地址","東橋一號(迷你)60元","巧克力核桃(迷你)60元","栗子65元","伯爵紅茶65元","雜糧吐司75元","東橋吐司一條120","藍莓","玉米奶油","墨魚起司","爆漿黃豆麵包","購買者姓名","連絡電話","電子郵件地址","寄送地址","指定配送時間","其他"]
  22.   
  23.   var d="";
  24.   
  25.   var i,j;
  26.   
  27.   
  28.   for (i = 0; i < n; i++) {
  29.     v= namedValues[field] ? namedValues[field][0]:""
  30.     if(v!="")//有輸入的資料才顯示
  31.     {
  32.       html+=field+":"+v+"<br/>";
  33.       if(price[field]!=undefined) //有價格才計算
  34.         money+=price[field]*v;         
  35.      }
  36.   }
  37.   
  38. html+="您購買"+money+"元";
  39.    
  40. <blockquote>  html+="您購買"+money+"元<br/>";
複製代碼


回復 支持 反對

使用道具 舉報

發表於 2019-6-21 15:29:26 | 顯示全部樓層
imingho 發表於 2019-6-21 15:14
原本張貼程式碼的網頁,會不見,要複製底下第二個程式碼,因為太多人copy錯,所以才會在論壇張貼文章, ...

老師謝謝您,但又出現
函式主體之後遺漏 }。 (第 65 行,檔案名稱:程式碼)關閉
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  

GMT+8, 2019-12-9 22:58 , Processed in 0.132852 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表