彰化一整天的論壇

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

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

[複製鏈接]
發表於 2020-3-8 11:56:53 | 顯示全部樓層
imingho 發表於 2020-3-8 11:38
您好,
     一次問一個問題點,方便回答及解說。
先您購買的金額為0這個問題。

老師您好 感謝您的回復真的是語法上沒有對應到表單上的文字,程式碼已更新如下
  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.   var price={"1斤(2包肉+2包湯) $700":700,"2斤(4包肉+4包湯) $1400":1400,"3斤(6包肉+6包湯) $2100":2100,"1包羊肉湯":50,"火鍋料A":100,"火鍋料B":100,"不加購":0,};
  10.   var money=0;
  11.   var free_shipping_money=999999;//設定免運費金額
  12.   var freight1=160;//設定運費金額
  13.   var freight2=180;//設定運費金額
  14.   var freight3=230;//設定運費金額
  15.   var n=data.values.length;
  16.   var fields="";
  17.   var field=["時間戳記","電子郵件地址","訂購者姓名","收件地址","收件者電話或手機","訂購數量","加購品選擇",];
  18.   var field_color={"訂購數量":"#0080ff","加購品選擇":"#00ff80"}; //設定產品字型顏色
  19.   var d="";
  20.   var i,j;
  21.   //HTML顏色 紅#ff0000  黃#ffff00   淺藍#00bfff   海軍藍#0080ff 檸檬綠 #32cd32 灰色 #808080
  22.   html="<img src=''><br/>";  //設定Logo圖片
  23.     html+="<div style=\"color:black\">";
  24.   
  25.   for (i = 0; i < n; i++)
  26.      {
  27.       v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  28.     if(v!="")//有輸入的資料才顯示
  29.     {
  30.       if(field_color[field[i]]!=undefined) //有顏色再設定
  31.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  32.       else
  33.          html+=field[i]+":"+v+"<br/>";
  34.       if(price[v]!=undefined) //選項有價格才加入費用
  35.         money+=price[v];         
  36.      }
  37.   }
  38.   
  39.   html+="您購買"+money+"元<br/>";
  40.   
  41.   //判斷運費
  42.   var shop_kind=namedValues["訂購數量"] ? namedValues["訂購數量"][0]:""; //設定運費金額
  43.   
  44.   if(shop_kind=="訂購數量")
  45.   {
  46.     if(money==price)
  47.     {
  48.       money+=freight2
  49.       html+="運費:"+freight2+"元<br/>";
  50.     }
  51.     else
  52.     {
  53.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  54.     }
  55.   }
  56.    
  57.   html+="總費用為"+money+"元<br/>";
  58.   
  59.   html+="</dvi><div style=\"color:purple\">" ;
  60.   
  61.   
  62.   html+="-----轉帳匯款資訊------------<br/>";
  63.   html+="銀行名稱:元大商業銀行(代碼:806)<br/>";
  64.   html+="分行名稱:永康分行<br/>";
  65.   html+="戶名:李東儒<br/>";
  66.   html+="帳號:0000000000000<br/>";
  67.   
  68.   html+="</div>";
  69.             
  70.   MailApp.sendEmail({
  71.     to: notifyEmail,
  72.     subject: subject,
  73.     htmlBody: html
  74.   });
  75.   
  76.   //將總金額回填儲存格
  77.   var sheet =SpreadsheetApp.getActiveSheet();
  78.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  79.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  80.   
  81. }
  82. function test()
  83. {
  84.     var sheet =SpreadsheetApp.getActiveSheet();
  85.    
  86.     Logger.log(sheet.getSheetValues(1,1,1,1));   
  87.   sheet.getActiveCell().getLastRow();
  88.   
  89. }
複製代碼
目前出現的 Email回復如右 註解 2020-03-08 115039.png   
執行紀錄如右 註解 2020-03-08 115224.png    
在試算表內也有加總了(如右)

表單執行

表單執行



這樣總算可以進到下一個問題了 ^^  
Q2 是 把羊肉爐當作主項目,其他如"羊肉湯、火鍋料A 或B "都是可複選  這樣要怎麼修改?   還請您幫忙解答
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2020-3-8 15:17:52 | 顯示全部樓層
本帖最後由 imingho 於 2020-3-8 15:22 編輯
yamath 發表於 2020-3-8 11:56
老師您好 感謝您的回復真的是語法上沒有對應到表單上的文字,程式碼已更新如下
目前出現的 Email回復如右 ...

我給您用我自己範例改過的程式碼,您自行修改,有問題再提出。
  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包(1500元)":1500,"雞精粉光12包(1800元)":1800,"雞精原味12包(1800元)":1800,"雞精粉光24包(3600元)":3600,"雞精人參24包(3600元)":3600,"雞精原味24包(3000元)":3000,"是(加60元運費差額)":60,"是(二個禮盒加70元)":70};

  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=["時間戳記","電子郵件地址","請問您想購買的產品","羊奶冰棒","香純滴雞精","是否加禮盒","指定配送時間","您的姓名","性別","聯絡電話","寄送地址","其他說明"]
  22.   
  23.   var field_color={"羊奶冰棒":"#ff0000","香純滴雞精":"#00ff00"}; //設定產品字型顏色
  24.   
  25.   var d="";
  26.   
  27.   var i,j;
  28.   
  29.   
  30.   //讀取選購欄位(多選)
  31.   var shop_option=namedValues["是否加禮盒"] ? namedValues["是否加禮盒"][0]:""; //是否加禮盒
  32.   
  33.   html="<img src='http://bestdaylong.com/images/sheep_ice.jpg'><br/>";  //設定Logo圖片
  34.   
  35.   html+="<div style=\"color:black\">";
  36.   for (i = 0; i < n; i++) {
  37.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  38.     if(v!="")//有輸入的資料才顯示
  39.     {
  40.       if(field_color[field[i]]!=undefined) //有顏色再設定
  41.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  42.       else
  43.          html+=field[i]+":"+v+"<br/>";
  44.       if(price[v]!=undefined) //選項有價格才加入費用
  45.         money+=price[v];
  46.       
  47.       if(shop_option.indexOf(v)>0) //有加選購計算金額
  48.         money+=price[v];
  49.      }
  50.   }
  51.   
  52.   
  53.   
  54.   html+="您購買"+money+"元<br/>";
  55.   
  56.   //判斷只有滴雞精才要算運貨
  57.   var shop_kind=namedValues["請問您想購買的產品"] ? namedValues["請問您想購買的產品"][0]:""; //設定免運商品
  58.   
  59.   if(shop_kind=="滴雞精")
  60.   {
  61.     if(money<free_shipping_money)
  62.     {
  63.       money+=freight
  64.       html+="運費:"+freight+"元<br/>";
  65.     }
  66.     else
  67.     {
  68.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  69.     }
  70.   }
  71.    
  72.   html+="總費用為"+money+"元<br/>";
  73.   
  74.   html+="</dvi><div style=\"color:purple\">" ;
  75.   
  76.   
  77.   html+="-----轉帳匯款資訊------------<br/>";
  78.   html+="銀行名稱:兆豐國際商業銀行(代碼:017)<br/>";
  79.   html+="分行名稱:竹北分行<br/>";
  80.   html+="戶名:彰化一整天<br/>";
  81.   html+="帳號:000-00-000000<br/>";
  82.   
  83.   html+="</div>";
  84.             
  85.   MailApp.sendEmail({
  86.     to: notifyEmail,
  87.     subject: subject,
  88.     htmlBody: html
  89.   });
  90.   
  91.   //將總金額回填儲存格
  92.   var sheet =SpreadsheetApp.getActiveSheet();
  93.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  94.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  95.   
  96.   
  97.   
  98. }
  99. function test()
  100. {
  101.     var sheet =SpreadsheetApp.getActiveSheet();
  102.    
  103.     Logger.log(sheet.getSheetValues(1,1,1,1));   
  104.   sheet.getActiveCell().getLastRow();
  105.   
  106. }
複製代碼


主要是32行,後面要改成您的欄位名稱
  1. var shop_option=namedValues["是否加禮盒"] ? namedValues["是否加禮盒"][0]:""; //是否加禮盒

  2.   
複製代碼

底下這段不用修改
  1.       if(shop_option.indexOf(v)>0) //有加選購計算金額
  2.         money+=price[v];
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2020-3-8 15:37:48 | 顯示全部樓層
本帖最後由 yamath 於 2020-3-8 15:39 編輯
imingho 發表於 2020-3-8 15:17
我給您用我自己範例改過的程式碼,您自行修改,有問題再提出。

Hi 老師
我把您特別寫出的那行修改後變成以下的程式碼
  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.   var price={"1斤(2包肉+2包湯) $700":700,"2斤(4包肉+4包湯) $1400":1400,"3斤(6包肉+6包湯) $2100":2100,"1包羊肉湯":50,"火鍋料A":100,"火鍋料B":100,"不加購":0,};
  10.   var money=0;
  11.   var free_shipping_money=999999;//設定免運費金額
  12.   var freight1=160;//設定運費金額
  13.   var freight2=180;//設定運費金額
  14.   var freight3=230;//設定運費金額
  15.   var n=data.values.length;
  16.   var fields="";
  17.   var field=["時間戳記","電子郵件地址","訂購者姓名","收件地址","收件者電話或手機","訂購數量","加購品選擇",];
  18.   var field_color={"訂購數量":"#0080ff","加購品選擇":"#00ff80"}; //設定產品字型顏色
  19.   var d="";
  20.   var i,j;
  21.   //HTML顏色 紅#ff0000  黃#ffff00   淺藍#00bfff   海軍藍#0080ff 檸檬綠 #32cd32 灰色 #808080
  22.   html="<img src=''><br/>";  //設定Logo圖片
  23.     html+="<div style=\"color:black\">";
  24.   
  25. //讀取選購欄位(多選)
  26.   var shop_option=namedValues["加購品選擇"] ? namedValues["加購品選擇"][0]:""; //是否加購
  27.   
  28.   html="<img src=''><br/>";  //設定Logo圖片
  29.   
  30.   html+="<div style=\"color:black\">";
  31.   for (i = 0; i < n; i++) {
  32.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  33.     if(v!="")//有輸入的資料才顯示
  34.     {
  35.       if(field_color[field[i]]!=undefined) //有顏色再設定
  36.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  37.       else
  38.          html+=field[i]+":"+v+"<br/>";
  39.       if(price[v]!=undefined) //選項有價格才加入費用
  40.         money+=price[v];
  41.       
  42.       if(shop_option.indexOf(v)>0) //有加選購計算金額
  43.         money+=price[v];
  44.      }
  45.   }
  46.   html+="您購買"+money+"元<br/>";
  47.   
  48.   //判斷運費
  49.   var shop_kind=namedValues["訂購數量"] ? namedValues["訂購數量"][0]:""; //設定運費金額
  50.   
  51.   if(shop_kind=="訂購數量")
  52.   {
  53.     if(money==price)
  54.     {
  55.       money+=freight2
  56.       html+="運費:"+freight2+"元<br/>";
  57.     }
  58.     else
  59.     {
  60.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  61.     }
  62.   }
  63.    
  64.   html+="總費用為"+money+"元<br/>";
  65.   
  66.   html+="</dvi><div style=\"color:purple\">" ;
  67.   
  68.   
  69.   html+="-----轉帳匯款資訊------------<br/>";
  70.   html+="銀行名稱:元大商業銀行(代碼:806)<br/>";
  71.   html+="分行名稱:永康分行<br/>";
  72.   html+="戶名:李東儒<br/>";
  73.   html+="帳號:0000000000000<br/>";
  74.   
  75.   html+="</div>";
  76.             
  77.   MailApp.sendEmail({
  78.     to: notifyEmail,
  79.     subject: subject,
  80.     htmlBody: html
  81.   });
  82.   
  83.   //將總金額回填儲存格
  84.   var sheet =SpreadsheetApp.getActiveSheet();
  85.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  86.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  87.   
  88. }
  89. function test()
  90. {
  91.     var sheet =SpreadsheetApp.getActiveSheet();
  92.    
  93.     Logger.log(sheet.getSheetValues(1,1,1,1));   
  94.   sheet.getActiveCell().getLastRow();
  95.   
  96. }
複製代碼
Email回復變成只加總 肉錢 沒有加到加購品的 註解 2020-03-08 153130.png   
程式執行紀錄部分如右 註解 2020-03-08 153031.png   
試算表單內的欄位如果複選會成這樣 註解 2020-03-08 153628.png
表單勾選方式如右圖 註解 2020-03-08 153831.png
麻煩您幫忙看看到底是哪裡有問題了

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2020-3-8 16:11:00 | 顯示全部樓層
yamath 發表於 2020-3-8 15:37
Hi 老師
我把您特別寫出的那行修改後變成以下的程式碼
Email回復變成只加總 肉錢 沒有加到加購品的   

剛剛那程式有錯,請以這個為主.
  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包(1500元)":1500,"雞精粉光12包(1800元)":1800,"雞精原味12包(1800元)":1800,"雞精粉光24包(3600元)":3600,"雞精人參24包(3600元)":3600,"雞精原味24包(3000元)":3000,"是(加60元運費差額)":60,"是(二個禮盒加70元)":70};

  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=["時間戳記","電子郵件地址","請問您想購買的產品","羊奶冰棒","香純滴雞精","是否加禮盒","指定配送時間","您的姓名","性別","聯絡電話","寄送地址","其他說明"]
  22.   
  23.   var field_color={"羊奶冰棒":"#ff0000","香純滴雞精":"#00ff00"}; //設定產品字型顏色
  24.   
  25.   var d="";
  26.   
  27.   var i,j;
  28.   
  29.   
  30.   //讀取選購欄位(多選)
  31.   var shop_option=namedValues["是否加禮盒"] ? namedValues["是否加禮盒"][0]:""; //是否加禮盒
  32.   
  33.   html="<img src='http://bestdaylong.com/images/sheep_ice.jpg'><br/>";  //設定Logo圖片
  34.   
  35.   html+="<div style=\"color:black\">";
  36.   for (i = 0; i < n; i++) {
  37.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  38.     if(v!="")//有輸入的資料才顯示
  39.     {
  40.       if(field_color[field[i]]!=undefined) //有顏色再設定
  41.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  42.       else
  43.          html+=field[i]+":"+v+"<br/>";
  44.       if(price[v]!=undefined) //選項有價格才加入費用
  45.         money+=price[v];
  46.       

  47.      }
  48.   }
  49.   //計算加選多項目
  50.   Object.keys(price).forEach(function(key){
  51.     if(shop_option.indexOf(key)>0)
  52.       {
  53.         money+=price[key];
  54.         Logger.log(key)+"="+price[key];
  55.       }
  56.    
  57.   });
  58.      
  59.   
  60.   
  61.   
  62.   
  63.   html+="您購買"+money+"元<br/>";
  64.   
  65.   //判斷只有滴雞精才要算運貨
  66.   var shop_kind=namedValues["請問您想購買的產品"] ? namedValues["請問您想購買的產品"][0]:""; //設定免運商品
  67.   
  68.   if(shop_kind=="滴雞精")
  69.   {
  70.     if(money<free_shipping_money)
  71.     {
  72.       money+=freight
  73.       html+="運費:"+freight+"元<br/>";
  74.     }
  75.     else
  76.     {
  77.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  78.     }
  79.   }
  80.    
  81.   html+="總費用為"+money+"元<br/>";
  82.   
  83.   html+="</dvi><div style=\"color:purple\">" ;
  84.   
  85.   
  86.   html+="-----轉帳匯款資訊------------<br/>";
  87.   html+="銀行名稱:兆豐國際商業銀行(代碼:017)<br/>";
  88.   html+="分行名稱:竹北分行<br/>";
  89.   html+="戶名:彰化一整天<br/>";
  90.   html+="帳號:000-00-000000<br/>";
  91.   
  92.   html+="</div>";
  93.             
  94.   MailApp.sendEmail({
  95.     to: notifyEmail,
  96.     subject: subject,
  97.     htmlBody: html
  98.   });
  99.   
  100.   //將總金額回填儲存格
  101.   var sheet =SpreadsheetApp.getActiveSheet();
  102.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  103.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  104.   
  105.   
  106.   
  107. }
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2020-3-8 19:51:47 | 顯示全部樓層
imingho 發表於 2020-3-8 16:11
剛剛那程式有錯,請以這個為主.

Hi 老師 感謝您的回覆, 下面是我修改的程式碼 請您看一下
  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.   var price={"1斤(2包肉+2包湯) $700":700,"2斤(4包肉+4包湯) $1400":1400,"3斤(6包肉+6包湯) $2100":2100,"1包羊肉湯":50,"火鍋料A":100,"火鍋料B":100,"不加購":0,};
  10.   var money=0;
  11.   var free_shipping_money=999999;//設定免運費金額
  12.   var freight1=160;//設定運費金額
  13.   var freight2=180;//設定運費金額
  14.   var freight3=230;//設定運費金額
  15.   var n=data.values.length;
  16.   var fields="";
  17.   var field=["時間戳記","電子郵件地址","訂購者姓名","收件地址","收件者電話或手機","訂購數量","加購品選擇",];
  18.   var field_color={"訂購數量":"#0080ff","加購品選擇":"#00ff80"}; //設定產品字型顏色
  19.   var d="";
  20.   var i,j;
  21.   //HTML顏色 紅#ff0000  黃#ffff00   淺藍#00bfff   海軍藍#0080ff 檸檬綠 #32cd32 灰色 #808080
  22.   html="<img src=''><br/>";  //設定Logo圖片
  23.     html+="<div style=\"color:black\">";
  24.   
  25. //讀取選購欄位(多選)
  26.   var shop_option=namedValues["加購品選擇"] ? namedValues["加購品選擇"][0]:""; //是否加購
  27.   //讀取選購欄位(多選)
  28.   
  29.   html="<img src=''><br/>";  //設定Logo圖片
  30.   
  31.   html+="<div style=\"color:black\">";
  32.   for (i = 0; i < n; i++) {
  33.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  34.     if(v!="")//有輸入的資料才顯示
  35.     {
  36.       if(field_color[field[i]]!=undefined) //有顏色再設定
  37.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  38.       else
  39.          html+=field[i]+":"+v+"<br/>";
  40.       if(price[v]!=undefined) //選項有價格才加入費用
  41.         money+=price[v];
  42.       
  43.       if(shop_option.indexOf(v)>0) //有加選購計算金額
  44.         money+=price[v];
  45.      }
  46.   }
  47.   
  48.     //計算加選多項目
  49.   Object.keys(price).forEach(function(key){
  50.     if(shop_option.indexOf(key)>0)
  51.       {
  52.         money+=price[key];
  53.         Logger.log(key)+"="+price[key];
  54.       }
  55.    
  56.   });
  57.   
  58.   
  59.   
  60.   html+="您購買"+money+"元<br/>";
  61.   
  62.   //判斷運費
  63.   var shop_kind=namedValues["訂購數量"] ? namedValues["訂購數量"][0]:""; //設定運費金額
  64.   
  65.   if(shop_kind=="訂購數量")
  66.   {
  67.     if(money==price)
  68.     {
  69.       money+=freight2
  70.       html+="運費:"+freight2+"元<br/>";
  71.     }
  72.     else
  73.     {
  74.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  75.     }
  76.   }
  77.    
  78.   html+="總費用為"+money+"元<br/>";
  79.   
  80.   html+="</dvi><div style=\"color:purple\">" ;
  81.   
  82.   
  83.   html+="-----轉帳匯款資訊------------<br/>";
  84.   html+="銀行名稱:元大商業銀行(代碼:806)<br/>";
  85.   html+="分行名稱:永康分行<br/>";
  86.   html+="戶名:李東儒<br/>";
  87.   html+="帳號:0000000000000<br/>";
  88.   
  89.   html+="</div>";
  90.             
  91.   MailApp.sendEmail({
  92.     to: notifyEmail,
  93.     subject: subject,
  94.     htmlBody: html
  95.   });
  96.   
  97.   //將總金額回填儲存格
  98.   var sheet =SpreadsheetApp.getActiveSheet();
  99.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  100.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  101.   
  102. }
複製代碼

問題在於 當加購選項>1個(即 2個或是3個加購品) 會有無法加總出正確的價格,這樣是不是變成要設定
Email回復有三個 單一個加購品時總價是正確的,但是2個時會只算到價格高的那個 如下圖 最下圖 總價應該要是 $850

註解 2020-03-08 194530.png 註解 2020-03-08 194515.png 註解 2020-03-08 194455.png
試算表 欄位如右 註解 2020-03-08 194616.png

感謝老師您的協助
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2020-3-8 23:25:38 | 顯示全部樓層
yamath 發表於 2020-3-8 19:51
Hi 老師 感謝您的回覆, 下面是我修改的程式碼 請您看一下
問題在於 當加購選項>1個(即 2個或是3個加購品 ...

我程式已修正過重覆算的問題,請參考底下程式碼.
  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包(1500元)":1500,"雞精粉光12包(1800元)":1800,"雞精原味12包(1800元)":1800,"雞精粉光24包(3600元)":3600,"雞精人參24包(3600元)":3600,"雞精原味24包(3000元)":3000,"是(加60元運費差額)":60,"是(二個禮盒加70元)":70};

  11.   var money=0;
  12.   
  13.   var check_field="是否加禮盒";//設定核取欄位名稱,若多個中間請加入,
  14.   
  15.   var free_shipping_money=3000; //設定免運費金額
  16.   
  17.   var freight=160;//設定運費金額
  18.   
  19.   var n=data.values.length;
  20.   
  21.   var fields="";
  22.   
  23.   var field=["時間戳記","電子郵件地址","請問您想購買的產品","羊奶冰棒","香純滴雞精","是否加禮盒","指定配送時間","您的姓名","性別","聯絡電話","寄送地址","其他說明"]
  24.   
  25.   var field_color={"羊奶冰棒":"#ff0000","香純滴雞精":"#00ff00"}; //設定產品字型顏色
  26.   
  27.   var d="";
  28.   
  29.   var i,j;
  30.   
  31.   
  32.   
  33.   html="<img src='http://bestdaylong.com/images/sheep_ice.jpg'><br/>";  //設定Logo圖片
  34.   
  35.   html+="<div style=\"color:black\">";
  36.   for (i = 0; i < n; i++) {
  37.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  38.     if(v!="")//有輸入的資料才顯示
  39.     {
  40.       if(field_color[field[i]]!=undefined) //有顏色再設定
  41.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  42.       else
  43.          html+=field[i]+":"+v+"<br/>";
  44.       

  45.       if(check_field.indexOf(field[i])>=0) //若欄位是核取方塊
  46.       {
  47.         //計算加選多項目
  48.         Object.keys(price).forEach(function(key){
  49.           if(v.indexOf(key)>=0)
  50.           {
  51.             money+=price[key];
  52.           }
  53.          
  54.         });
  55.       }
  56.       else
  57.       {
  58.         if(price[v]!=undefined) //選項有價格才加入費用
  59.           money+=price[v];
  60.       }


  61.      }
  62.   }

  63.   
  64.   
  65.   
  66.   html+="您購買"+money+"元<br/>";
  67.   
  68.   //判斷只有滴雞精才要算運貨
  69.   var shop_kind=namedValues["請問您想購買的產品"] ? namedValues["請問您想購買的產品"][0]:""; //設定免運商品
  70.   
  71.   if(shop_kind=="滴雞精")
  72.   {
  73.     if(money<free_shipping_money)
  74.     {
  75.       money+=freight
  76.       html+="運費:"+freight+"元<br/>";
  77.     }
  78.     else
  79.     {
  80.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  81.     }
  82.   }
  83.    
  84.   html+="總費用為"+money+"元<br/>";
  85.   
  86.   html+="</dvi><div style=\"color:purple\">" ;
  87.   
  88.   
  89.   html+="-----轉帳匯款資訊------------<br/>";
  90.   html+="銀行名稱:兆豐國際商業銀行(代碼:017)<br/>";
  91.   html+="分行名稱:竹北分行<br/>";
  92.   html+="戶名:彰化一整天<br/>";
  93.   html+="帳號:000-00-000000<br/>";
  94.   
  95.   html+="</div>";
  96.             
  97.   MailApp.sendEmail({
  98.     to: notifyEmail,
  99.     subject: subject,
  100.     htmlBody: html
  101.   });
  102.   
  103.   //將總金額回填儲存格
  104.   var sheet =SpreadsheetApp.getActiveSheet();
  105.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  106.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  107.   
  108.   
  109.   
  110. }
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2020-3-9 02:17:12 | 顯示全部樓層
imingho 發表於 2020-3-8 23:25
我程式已修正過重覆算的問題,請參考底下程式碼.

Hi 老師
下面是我修改的程式碼,問題還是一樣耶~單一加購可以正確累加,但是在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.   var price={"1斤(2包肉+2包湯) $700":700,"2斤(4包肉+4包湯) $1400":1400,"3斤(6包肉+6包湯) $2100":2100,"1包羊肉湯":50,"火鍋料A":100,"火鍋料B":100,"不加購":0,};
  10.   var money=0;
  11.   var check_field="1包羊肉湯,火鍋料A,火鍋料B,不加購";//設定核取欄位名稱,若多個中間請加入,
  12.   var free_shipping_money=999999;//設定免運費金額
  13.   var freight1=160;//設定運費金額
  14.   var freight2=180;//設定運費金額
  15.   var freight3=230;//設定運費金額
  16.   var n=data.values.length;
  17.   var fields="";
  18.   var field=["時間戳記","電子郵件地址","訂購者姓名","收件地址","收件者電話或手機","訂購數量","加購品選擇",];
  19.   var field_color={"訂購數量":"#0080ff","加購品選擇":"#00ff80"}; //設定產品字型顏色
  20.   var d="";
  21.   var i,j;
  22.   
  23.   //HTML顏色 紅#ff0000  黃#ffff00   淺藍#00bfff   海軍藍#0080ff 檸檬綠 #32cd32 灰色 #808080

  24. html="<img src=''><br/>";  //設定Logo圖片
  25.   
  26.   html+="<div style=\"color:black\">";
  27.   for (i = 0; i < n; i++) {
  28.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  29.     if(v!="")//有輸入的資料才顯示
  30.     {
  31.       if(field_color[field[i]]!=undefined) //有顏色再設定
  32.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  33.       else
  34.          html+=field[i]+":"+v+"<br/>";
  35.       

  36.       if(check_field.indexOf(field[i])>=0) //若欄位是核取方塊
  37.       {
  38.         //計算加選多項目
  39.         Object.keys(price).forEach(function(key){
  40.           if(v.indexOf(key)>=0)
  41.           {
  42.             money+=price[key];
  43.           }
  44.          
  45.         });
  46.       }
  47.       else
  48.       {
  49.         if(price[v]!=undefined) //選項有價格才加入費用
  50.           money+=price[v];
  51.       }


  52.      }
  53.   }

  54.   
  55.   
  56.   html+="您購買"+money+"元<br/>";
  57.   
  58.   //判斷運費
  59.   var shop_kind=namedValues["訂購數量"] ? namedValues["訂購數量"][0]:""; //設定運費金額
  60.   
  61.   if(shop_kind=="訂購數量")
  62.   {
  63.     if(money==price)
  64.     {
  65.       money+=freight2
  66.       html+="運費:"+freight2+"元<br/>";
  67.     }
  68.     else
  69.     {
  70.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  71.     }
  72.   }
  73.    
  74.   html+="總費用為"+money+"元<br/>";
  75.   
  76.   html+="</dvi><div style=\"color:purple\">" ;
  77.   
  78.   
  79.   html+="-----轉帳匯款資訊------------<br/>";
  80.   html+="銀行名稱:元大商業銀行(代碼:806)<br/>";
  81.   html+="分行名稱:永康分行<br/>";
  82.   html+="戶名:李東儒<br/>";
  83.   html+="帳號:0000000000000<br/>";
  84.   
  85.   html+="</div>";
  86.             
  87.   MailApp.sendEmail({
  88.     to: notifyEmail,
  89.     subject: subject,
  90.     htmlBody: html
  91.   });
  92.   
  93.   //將總金額回填儲存格
  94.   var sheet =SpreadsheetApp.getActiveSheet();
  95.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  96.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  97.   }
複製代碼
以下是MAIL 截圖
Email回復.jpg
還勞煩您幫忙一下了~


回復 支持 反對

使用道具 舉報

 樓主| 發表於 2020-3-9 08:07:56 | 顯示全部樓層
yamath 發表於 2020-3-9 02:17
Hi 老師
下面是我修改的程式碼,問題還是一樣耶~單一加購可以正確累加,但是在2個加購項時會變成沒辦法 ...
  1. var check_field="1包羊肉湯,火鍋料A,火鍋料B,不加購";//設定核取欄位名稱,若多個中間請加入,
複製代碼

這個是填欄位名稱不是值.
回復 支持 反對

使用道具 舉報

發表於 2020-3-9 11:27:15 | 顯示全部樓層
Hi 老師
有修正了 變成以下的程式碼
  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.   var price={"1斤(2包肉+2包湯) $700":700,"2斤(4包肉+4包湯) $1400":1400,"3斤(6包肉+6包湯) $2100":2100,"1包羊肉湯":50,"火鍋料A":100,"火鍋料B":100,"不加購":0,};
  10.   var money=0;
  11.   var check_field="加購品選擇";//設定核取欄位名稱,若多個中間請加入,
  12.   var free_shipping_money=999999;//設定免運費金額
  13.   var freight1=160;//設定運費金額
  14.   var freight2=180;//設定運費金額
  15.   var freight3=230;//設定運費金額
  16.   var n=data.values.length;
  17.   var fields="";
  18.   var field=["時間戳記","電子郵件地址","訂購者姓名","收件地址","收件者電話或手機","訂購數量","加購品選擇",];
  19.   var field_color={"訂購數量":"#0080ff","加購品選擇":"#00ff80"}; //設定產品字型顏色
  20.   var d="";
  21.   var i,j;
  22.   
  23.   //HTML顏色 紅#ff0000  黃#ffff00   淺藍#00bfff   海軍藍#0080ff 檸檬綠 #32cd32 灰色 #808080

  24. html="<img src=''><br/>";  //設定Logo圖片
  25.   
  26.   html+="<div style=\"color:black\">";
  27.   for (i = 0; i < n; i++) {
  28.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  29.     if(v!="")//有輸入的資料才顯示
  30.     {
  31.       if(field_color[field[i]]!=undefined) //有顏色再設定
  32.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  33.       else
  34.          html+=field[i]+":"+v+"<br/>";
  35.       

  36.       if(check_field.indexOf(field[i])>=0) //若欄位是核取方塊
  37.       {
  38.         //計算加選多項目
  39.         Object.keys(price).forEach(function(key){
  40.           if(v.indexOf(key)>=0)
  41.           {
  42.             money+=price[key];
  43.           }
  44.          
  45.         });
  46.       }
  47.       else
  48.       {
  49.         if(price[v]!=undefined) //選項有價格才加入費用
  50.           money+=price[v];
  51.       }


  52.      }
  53.   }

  54.   
  55.   
  56.   html+="您購買"+money+"元<br/>";
  57.   
  58.   //判斷運費
  59.   var shop_kind=namedValues["訂購數量"] ? namedValues["訂購數量"][0]:""; //設定運費金額
  60.   
  61.   if(shop_kind=="訂購數量")
  62.   {
  63.     if(money==price)
  64.     {
  65.       money+=freight2
  66.       html+="運費:"+freight2+"元<br/>";
  67.     }
  68.     else
  69.     {
  70.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  71.     }
  72.   }
  73.    
  74.   html+="總費用為"+money+"元<br/>";
  75.   
  76.   html+="</dvi><div style=\"color:purple\">" ;
  77.   
  78.   
  79.   html+="-----轉帳匯款資訊------------<br/>";
  80.   html+="銀行名稱:元大商業銀行(代碼:806)<br/>";
  81.   html+="分行名稱:永康分行<br/>";
  82.   html+="戶名:李東儒<br/>";
  83.   html+="帳號:0000000000000<br/>";
  84.   
  85.   html+="</div>";
  86.             
  87.   MailApp.sendEmail({
  88.     to: notifyEmail,
  89.     subject: subject,
  90.     htmlBody: html
  91.   });
  92.   
  93.   //將總金額回填儲存格
  94.   var sheet =SpreadsheetApp.getActiveSheet();
  95.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  96.   sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  97.   }
複製代碼
已經可以正確加總正確數字了~ YA~ 如右圖 說明.jpg 第三個的問題是 需要判斷運費
1斤+加購 運費由160變成180  ; 兩斤+家購還是維持180 ; 三斤+加購則是 230
這樣需要做怎樣的程式來做判斷?
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2020-3-9 13:29:54 | 顯示全部樓層
本帖最後由 imingho 於 2020-3-9 15:30 編輯
yamath 發表於 2020-3-9 11:27
Hi 老師
有修正了 變成以下的程式碼已經可以正確加總正確數字了~ YA~ 如右圖第三個的問題是 需要判斷運費
...

我幫您寫上,您看看是否OK.
  1. //判斷運費
  2.   var shop_kind=namedValues["訂購數量"] ? namedValues["訂購數量"][0]:""; //購買商品
  3.   var shop_option=namedValues["加購品選擇"] ? namedValues["加購品選擇"][0]:""; //加購商品
  4.   
  5.   if(shop_kind=="1斤(2包肉+2包湯) $700" && shop_option=="不加購" )        //運費160
  6.   {
  7.       money+=freight1;
  8.       html+="運費:"+freight1+"元<br/>";
  9.   }else if(shop_kind=="2斤(4包肉+4包湯) $1400")        //運費180
  10.   {
  11.       money+=freight2;
  12.       html+="運費:"+freight2+"元<br/>";
  13.   }
  14.   else //運費230
  15.   {
  16.       money+=freight3;
  17.       html+="運費:"+freight3+"元<br/>";  
  18.   }
複製代碼
回復 支持 反對

使用道具 舉報

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

本版積分規則

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

GMT+8, 2020-4-7 18:18 , Processed in 0.145558 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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