彰化一整天的論壇

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

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

  [複製鏈接]
 樓主| 發表於 2019-8-14 16:07:24 | 顯示全部樓層
skyblue199019 發表於 2019-8-14 15:43
老師我解了半天解不出來!
這是我改好的,

您要先看他的問題,再看我的回覆才會看得懂,看懂才有辦法修改,不是隨便貼上就可以執行。
google_form_20190814_01.jpg

1.這是它回傳的欄位及值,我寫給他看,您的問題跟他類似,要自己修改。

下次張貼程式碼請看:

如何在discuz張貼程式碼
http://discuz.bestdaylong.com/fo ... 30239&fromuid=2
(出處: 彰化一整天的論壇)



回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-8-15 11:27:46 | 顯示全部樓層
skyblue199019 發表於 2019-8-14 15:43
老師我解了半天解不出來!
這是我改過的,好像也是無法顯示金額

您好,
    請參考
【Google表單教學】如何讓核取方塊帶數量並計算
http://discuz.bestdaylong.com/fo ... 38568&fromuid=2
(出處: 彰化一整天的論壇)
回復 支持 反對

使用道具 舉報

發表於 2019-8-15 14:37:11 | 顯示全部樓層
本帖最後由 skyblue199019 於 2019-8-15 15:04 編輯

老師我將老師給我的程式碼貼上去修改了一番,
發現試了之後好像收不到信
是我貼法貼錯了嗎?因為沒收到信我也不確定他會不會計算。
不知道問題發生在哪裡?滿頭霧水
請老師指點迷津,感恩。
  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={"3.樂活小資月收衣週期(選一日)":247,"3.雙薪悠遊月收衣週期(選二日)":236,"3.幸福家庭月收衣週期(選三日)":224,"3.樂活小資季收衣週期(選一日)":229,"3.雙薪悠遊季收衣週期(選二日)":215,"3.幸福家庭季收衣週期(選三日)":201};
  11.   var money=0;
  12.   
  13.   var n=data.values.length;
  14.   
  15.   {
  16.   var namedValues;
  17.   
  18.   namedValues = data.namedValues;
  19.   
  20.   //取得輸入欄位
  21.   var select_weekday;//選擇最您要寄送的日期
  22.   
  23.   select_weekday=namedValues["3.樂活小資月收衣週期(選一日)","3.雙薪悠遊月收衣週期(選二日)","3.幸福家庭月收衣週期(選三日)","樂活小資季收衣週期(選一日)","3.雙薪悠遊季收衣週期(選二日)","3.幸福家庭季收衣週期(選三日)"] ? namedValues["3.樂活小資月收衣週期(選一日)","3.雙薪悠遊月收衣週期(選二日)","3.幸福家庭月收衣週期(選三日)","樂活小資季收衣週期(選一日)","3.雙薪悠遊季收衣週期(選二日)","3.幸福家庭季收衣週期(選三日)"][0]:"" ;  
  24.   
  25.   var num=0; //加總數量
  26.   var m;//取出的數字
  27.   
  28.   var i,j;
  29.   
  30.   var select_weekdays;
  31.   
  32.   var item;
  33.   
  34.   var items;
  35.   
  36.   select_weekdays=select_weekday.split(", ");//將多選項目拆成陣列
  37.   
  38.   for(i=0;i<select_weekdays.length;i++)
  39.   {
  40.     item=select_weekdays[i];
  41.     items=item.split("@");//將各別選項拆成數量
  42.     m=items[1];
  43.     num+=parseInt(m,10);//將文字轉成數字
  44.   }
  45.   
  46.   Logger.log(num); //顯示結果
  47. }

  48.   var fields="";
  49.   
  50.   var field=["電子郵件地址","2.月方案選擇","2.季方案選擇","3.樂活小資月收衣週期(選一日)","3.雙薪悠遊月收衣週期(選二日)","3.幸福家庭月收衣週期(選三日)","樂活小資季收衣週期(選一日)","3.雙薪悠遊季收衣週期(選二日)","3.幸福家庭季收衣週期(選三日)","請輸入姓名","性別","聯絡手機","住屋型態","地址","社區(大樓)名、獨棟透天免填","去靜電紙(訂洗贈送,無需額外收費)"]
  51.   
  52.   var d="";
  53.   
  54.   var i,j;


  55.   
  56.   for (i = 0; i < n; i++) {
  57.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  58.     if(v!="")//有輸入的資料才顯示
  59.     {
  60.       html+=field[i]+":"+v+"<br/>";
  61.       if(price[field[i]]!=undefined) //有價格才計算
  62.         money+=price[field[i]]*v;         
  63.      }
  64.   }
  65.   
  66.   html+="您總共購買"+money+"元"+d;
  67.   
  68.   html+="------------轉帳匯款資訊------------<br/>";
  69.   html+="銀行名稱:(代碼:004)台灣銀行<br/>";
  70.   html+="分行名稱:XX分行<br/>";
  71.   html+="帳號:XXXXXXXXXXXX<br/>";
  72.   html+="請於完成訂單後48小時內完成匯款<br/>";
  73.   html+="完成匯款後請加入我們的line社群並留下(您的大名)和(匯款帳號後五碼)<br/>,我們的Line帳號是LINE ID:@XXXXXX<br/>";
  74.   html+="也可來電告知我們,訂購大名及匯款後5碼,電話:098XXXXXX<br/>";
  75.   html+="我們會在上班時間安排人員將洗衣袋送至管理室,無管理室之大樓、透天會與您約時間交給您。<br/>";
  76.   html+="如需更改或編輯請點下方連結 Edit response<br/>";
  77.             
  78.   MailApp.sendEmail({
  79.     to: notifyEmail,
  80.     subject: subject,
  81.     htmlBody: html
  82.   });
  83. }
複製代碼



螢幕快照 2019-08-15 下午2.56.57.png
螢幕快照 2019-08-15 下午2.58.03.png
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-8-15 14:48:11 | 顯示全部樓層
skyblue199019 發表於 2019-8-15 14:37
老師我將老師給我的程式碼貼上去修改了一番,
發現試了之後好像收不到信
是我貼法貼錯了嗎?因為沒收到信我 ...

您好,
     請貼上您的表單畫面及試算表的結果,像我教學寫的那樣.
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-8-15 15:12:27 | 顯示全部樓層
skyblue199019 發表於 2019-8-15 14:37
老師我將老師給我的程式碼貼上去修改了一番,
發現試了之後好像收不到信
是我貼法貼錯了嗎?因為沒收到信我 ...

您的是有條件式跳題,會有多個星期,我寫的只有是一個範例,
您有先試看看寫一個是否可以執行嗎?
程式碼要先瞭解您才有辦法套用,不是隨便貼上就會執行。
回復 支持 反對

使用道具 舉報

發表於 2019-8-15 17:00:09 | 顯示全部樓層
imingho 發表於 2019-8-15 15:12
您的是有條件式跳題,會有多個星期,我寫的只有是一個範例,
您有先試看看寫一個是否可以執行嗎?
程式碼 ...

我依照老師的建議從新開一個表單,設了一的價格題,射了一個星期題,
收到的回覆信金額都不對
  1. function autoSendmail(data) {
  2.   var subject = "彰化一整天訂購物網 表單自動通知", // 信件標題
  3.       emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
  4.       namedValues = data.namedValues,
  5.       notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
  6.       html = "";
  7.   
  8.   //設定產品價格
  9.   var price={"價格":100};

  10.   var money=0;
  11.   function getFormData(data) {
  12.   var namedValues;
  13.   
  14.   namedValues = data.namedValues;
  15.   
  16.   //取得輸入欄位
  17.   var select_weekday;//選擇最您要寄送的日期
  18.   
  19.   select_weekday=namedValues["月收送"] ? namedValues["月收送"][0]:"" ;  
  20.   
  21.   var num=0; //加總數量
  22.   var m;//取出的數字
  23.   
  24.   var i,j;
  25.   
  26.   var select_weekdays;
  27.   
  28.   var item;
  29.   
  30.   var items;
  31.   
  32.   select_weekdays=select_weekday.split(", ");//將多選項目拆成陣列
  33.   
  34.   for(i=0;i<select_weekdays.length;i++)
  35.   {
  36.     item=select_weekdays[i];
  37.     items=item.split("@");//將各別選項拆成數量
  38.     m=items[1];
  39.     num+=parseInt(m,9);//將文字轉成數字
  40.   }
  41.   
  42.   Logger.log(num); //顯示結果
  43. }
  44.   Object.keys(namedValues).forEach(function(key) {
  45.     if(namedValues[key]!="")//有輸入的資料才顯示
  46.     {
  47.       html+=key+":"+namedValues[key]+"<br/>";
  48.       if(price[key]!=undefined) //有價格才計算
  49.         money+=price[key]*namedValues[key];
  50.     }
  51.    
  52.   });  
  53.   
  54.   html+="您總共購買"+money+"元";
  55.   
  56.             
  57.   MailApp.sendEmail({
  58.     to: notifyEmail,
  59.     subject: subject,
  60.     htmlBody: html
  61.   });
  62.   
  63. }
複製代碼



收到的信

收到的信

回覆內容

回覆內容
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-8-15 17:42:24 | 顯示全部樓層
本帖最後由 imingho 於 2019-8-16 10:53 編輯
skyblue199019 發表於 2019-8-15 17:00
我依照老師的建議從新開一個表單,設了一的價格題,射了一個星期題,
收到的回覆信金額都不對

function內再使用function它並不會執行,要呼叫才會執行,您只要將您要用的語法複製過來就可以。
您用底下的程式碼執行看看。
  1. function autoSendmail(data) {
  2.   var subject = "彰化一整天訂購物網 表單自動通知", // 信件標題
  3.       emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
  4.       namedValues = data.namedValues,
  5.       notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
  6.       html = "";
  7.   
  8.   //設定產品價格
  9.   var price={"價格":100};

  10.   var money=0;

  11.   
  12.   //取得輸入欄位
  13.   var select_weekday;//選擇最您要寄送的日期
  14.   
  15.   select_weekday=namedValues["月收送"] ? namedValues["月收送"][0]:"" ;  
  16.   
  17.   
  18.   var num=0; //加總數量
  19.   var m;//取出的數字
  20.   
  21.   var i,j;
  22.   
  23.   var select_weekdays;
  24.   
  25.   var item;
  26.   
  27.   var items;
  28.   
  29.   select_weekdays=select_weekday.split(", ");//將多選項目拆成陣列
  30.   
  31.   for(i=0;i<select_weekdays.length;i++)
  32.   {
  33.     item=select_weekdays[i];
  34.     items=item.split("@");//將各別選項拆成數量
  35.     m=items[1];
  36.     num+=parseInt(m,9);//將文字轉成數字
  37.   }
  38.   
  39.   if(price["價格"]!=undefined) //有價格才計算
  40.         money+=price["價格"]*num;
  41.   
  42.   
  43.   html+="您總共購買"+money+"元";
  44.   
  45.             
  46.   MailApp.sendEmail({
  47.     to: notifyEmail,
  48.     subject: subject,
  49.     htmlBody: html
  50.   });
  51.   
  52. }
複製代碼


回復 支持 反對

使用道具 舉報

發表於 2019-9-26 22:51:19 | 顯示全部樓層
imingho 發表於 2019-5-11 21:55
不同數量不同運費的範例.

老師您好,
參考您這篇程式, 若我的運費是1-2盒160元, 3-5盒225元, 6-10盒290元.....
請問這樣程式該怎麼寫呢?謝謝您的分享與回覆~~
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-9-27 15:40:39 | 顯示全部樓層
本帖最後由 imingho 於 2020-4-24 08:35 編輯
Deborah 發表於 2019-9-26 22:51
老師您好,
參考您這篇程式, 若我的運費是1-2盒160元, 3-5盒225元, 6-10盒290元.....
請問這樣程式該怎麼 ...

底下是多個不同數量不同運費的範例.
  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={"羊奶冰棒20枝(全部原味,500元含運費)":500,"羊奶冰棒20枝(全部紅豆,500元含運費)":500,"羊奶冰棒20枝(紅豆原味各半,500元含運費)":500,"雞精原味12包(1660元含運費)":1660,"雞精粉光12包(1960元含運費)":1960,"雞精12包(1960元含運費)":1960,"雞精粉光24包(3600元含運費)":3600,"雞精人參24包(3600元含運費)":3600};
  11.   var money=0;
  12.   
  13.   
  14.   
  15.   var freight_all=0;  //總運費
  16.   
  17.   var n=data.values.length;
  18.   
  19.   var fields="";
  20.   
  21.   var field=["時間戳記","電子郵件地址","請問您想購買的產品","羊奶冰棒20枝(全部原味,500元含運費)","羊奶冰棒20枝(全部紅豆,500元含運費)","羊奶冰棒20枝(紅豆原味各半,500元含運費)","雞精原味12包(1660元含運費)","雞精粉光12包(1960元含運費)","雞精12包(1960元含運費)","","雞精粉光24包(3600元含運費)","雞精人參24包(3600元含運費)","指定配送時間","您的姓名","性別","聯絡電話","寄送地址","其他說明"]  
  22.   var buy_amount=0;//購買數量
  23.   
  24.   var i,j;
  25.   
  26.   //顯示欄位名稱
  27.   show_field(namedValues);
  28.   
  29.   for (i = 0; i < n; i++) {
  30.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  31.     if(v!="")//有輸入的資料才顯示
  32.     {
  33.       html+=field[i]+":"+v+"<br/>";
  34.       if(price[field[i]]!=undefined) //有價格才計算
  35.       {
  36.         money+=price[field[i]]*v;
  37.         buy_amount+=parseInt(v,10); //將文字型別轉成數字型別
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2019-10-1 23:44:07 | 顯示全部樓層
本帖最後由 Deborah 於 2019-10-2 00:36 編輯
imingho 發表於 2019-9-27 15:40
底下是多個不同數量不同運費的範例.

老師您好,
謝謝您,但請原諒我的愚蠢
1. 我套入您提供的程式後,發現個極大問題><,我的品項有3.5吋及6吋,3.5吋甜點4個為1盒,6吋單個為1盒,為了3.5吋可混搭口味,所以讓客人自行填入想要的數量,例如數量8個檸檬派,程式會識別為8盒,運費金額就會錯誤,請問老師有可以識別3.5吋4個為1盒與6吋單個為1盒的程式寫法嗎?
2. 因為我還有面交免運的取貨方式,加入面交免運費的程式後,運費都是顯示為0,請問如下程式及表單項目哪裡有問題呢?

再次謝謝您的耐心回覆!!
  1. function autoSendmail(data) {
  2.   var subject = "Apu・手作烘焙・網路訂購單 費用繳款通知", // 信件標題
  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={"《酸酸檸檬派 - 3.5吋》請填寫欲訂購的數量":000,"《布魯派 - 3.5吋》請填寫欲訂購的數量":000,"《林果派 - 3.5吋》請填寫欲訂購的數量"000,"《堅果派 - 3.5吋》請填寫欲訂購的數量":000,"《酸酸檸檬派 - 6吋》請填寫欲訂購的數量":000,"《布魯派 - 6吋》請填寫欲訂購的數量":000,"《林果派 - 6吋》請填寫欲訂購的數量":000,"《堅果派 - 6吋》請填寫欲訂購的數量":000};
  11.   var money=0;
  12.   
  13.   var pickup;//取貨方式
  14.   
  15.   pickup=namedValues["取貨方式"] ? namedValues["取貨方式"][0]:"" ;
  16.   
  17.   var freight_all=0;  //總運費
  18.   
  19.   var n=data.values.length;
  20.   
  21.   var fields="";
  22.   
  23.   var field=["時間戳記","電子郵件地址","《酸酸檸檬派 - 3.5吋》請填寫欲訂購的數量","《布魯派 - 3.5吋》請填寫欲訂購的數量","《林果派 - 3.5吋》請填寫欲訂購的數量","《堅果派 - 3.5吋》請填寫欲訂購的數量","《酸酸檸檬派 - 6吋》請填寫欲訂購的數量","《布魯派 - 6吋》請填寫欲訂購的數量","《林果派 - 6吋》請填寫欲訂購的數量","《堅果派 - 6吋》請填寫欲訂購的數量","請選擇您的取貨方式","取貨人姓名","取貨人電話","取貨日期","取貨時間","收件人姓名","收件人電話","收件人地址","指定到貨日期","指定到貨時段(實際依黑貓送貨情況)"]  
  24.   var buy_amount=0;//購買數量
  25.   
  26.   var i,j;
  27.   
  28.   //顯示欄位名稱
  29.   show_field(namedValues);
  30.   
  31.   for (i = 0; i < n; i++) {
  32.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  33.     if(v!="")//有輸入的資料才顯示
  34.     {
  35.       html+=field[i]+":"+v+"<br/>";
  36.       if(price[field[i]]!=undefined) //有價格才計算
  37.       {
  38.         money+=price[field[i]]*v;
  39.         buy_amount+=v;
  40.         
  41.       }
  42.      }
  43.   }
  44.   
  45.   html+="您訂購派品金額為"+money+"元<br/>";
  46.   if(pickup=="低溫宅配")
  47.    
  48.    
  49.   //計算個別運費
  50.   
  51.   if(buy_amount>=1 && buy_amount<=2)//1-2盒
  52.   {
  53.     freight_all=160;
  54.   }
  55.   else if(buy_amount>=3 && buy_amount<=6)//3-6盒
  56.   {
  57.     freight_all=225;
  58.   }
  59.   else if(buy_amount>=7 && buy_amount<=16)//7-16盒
  60.   {
  61.     freight_all=290;
  62.   }
  63.   else //其它運費
  64.   {
  65.      freight_all=500;
  66.   }

  67.   if(pickup=="面交")  
  68.   {
  69.                 html+="運費:免費(面交)<br/>";
  70.   }


  71.   money+=freight_all;
  72.   html+="運費:"+freight_all+"元<br/>";
  73.   
  74.   
  75.   html+="總費用為"+money+"元<br/>";

  76. MailApp.sendEmail({
  77.     to: notifyEmail,
  78.     subject: subject,
  79.     htmlBody: html
  80.   });

  81.   
  82. }
  83. function test()
  84. {
  85.     var sheet =SpreadsheetApp.getActiveSheet();
  86.    
  87.     Logger.log(sheet.getSheetValues(1,1,1,1));   
  88.   
  89. }
  90. function show_field(namedValues)
  91. {
  92.   fields="";
  93.   Object.keys(namedValues).forEach(function(key) {
  94.     if(namedValues[key]!="")//有輸入的資料才顯示
  95.     {
  96.       fields+="["+key+"]:["+namedValues[key]+"]\n";
  97.     }
  98.    
  99.   });  
  100.   Logger.log(fields);
  101.   
  102. }
複製代碼

1569945709007.jpg
1569947658014.jpg
回復 支持 反對

使用道具 舉報

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

本版積分規則

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

GMT+8, 2021-10-19 07:17 , Processed in 0.125478 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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