彰化一整天的論壇

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

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

[複製鏈接]
 樓主| 發表於 2019-10-2 09:36:21 | 顯示全部樓層
Deborah 發表於 2019-10-1 23:44
老師您好,
謝謝您,但請原諒我的愚蠢。
1. 我套入您提供的程式後,發現個極大問題> ...

您的運送方式要完全一樣才可以.還有您少了左右大括號.
  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.   }

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


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

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

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

使用道具 舉報

發表於 2019-10-2 11:40:48 | 顯示全部樓層
imingho 發表於 2019-10-2 09:36
您的運送方式要完全一樣才可以.還有您少了左右大括號.

老師您好,
所以您說的運送方式一樣是指面交及宅配嗎?
還是指3.5吋4個一盒及6吋單個一盒呢?謝謝您的回覆!
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-10-2 11:44:25 | 顯示全部樓層
Deborah 發表於 2019-10-2 11:40
老師您好,
所以您說的運送方式一樣是指面交及宅配嗎?
還是指3.5吋4個一盒及6吋單個一盒呢?謝謝您的回覆 ...

是的。
另外3.5吋的程式碼如下.
  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.                 //判斷數量是1/4或是1
  40.                 if(field[i].indexOf("3.5吋")>0) //若是3.5吋則算1/4數量
  41.                         buy_amount+=v/4;
  42.                 else
  43.                         buy_amount+=v;
  44.         
  45.       }
  46.      }
  47.   }
  48.   
  49.    
  50.   html+="您訂購派品金額為"+money+"元<br/>";
  51.   if(pickup=="低溫宅配(黑貓宅急便)")
  52.   {   
  53.    
  54.           //計算個別運費
  55.           
  56.           if(buy_amount>=1 && buy_amount<=2)//1-2盒
  57.           {
  58.                 freight_all=160;
  59.           }
  60.           else if(buy_amount>=3 && buy_amount<=6)//3-6盒
  61.           {
  62.                 freight_all=225;
  63.           }
  64.           else if(buy_amount>=7 && buy_amount<=16)//7-16盒
  65.           {
  66.                 freight_all=290;
  67.           }
  68.           else //其它運費
  69.           {
  70.                  freight_all=500;
  71.           }
  72.   }

  73.   if(pickup=="面交")  
  74.   {
  75.                 html+="運費:免費(面交)<br/>";
  76.   }


  77.   money+=freight_all;
  78.   html+="運費:"+freight_all+"元<br/>";
  79.   
  80.   
  81.   html+="總費用為"+money+"元<br/>";

  82. MailApp.sendEmail({
  83.     to: notifyEmail,
  84.     subject: subject,
  85.     htmlBody: html
  86.   });

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


回復 支持 1 反對 0

使用道具 舉報

發表於 2019-10-3 20:47:48 | 顯示全部樓層
本帖最後由 Deborah 於 2019-10-3 20:54 編輯
imingho 發表於 2019-10-2 11:44
是的。
另外3.5吋的程式碼如下.

老師您好,
謝謝您的回覆。請問我寫入您回覆的3.5吋程式碼,測試只有訂購3.5吋的運費是正確的,但測試訂購3.5吋及6吋運費就錯誤。是什麼原因呢?
  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吋》請填寫欲訂購的數量":120,"《布魯派 - 3.5吋》請填寫欲訂購的數量":160,"《林果派 - 3.5吋》請填寫欲訂購的數量":120,"《堅果派 - 3.5吋》請填寫欲訂購的數量":140,"《酸酸檸檬派 - 6吋》請填寫欲訂購的數量":360,"《布魯派 - 6吋》請填寫欲訂購的數量":600,"《林果派 - 6吋》請填寫欲訂購的數量":420,"《堅果派 - 6吋》請填寫欲訂購的數量":420};
  11.   var money=0;
  12.   
  13.   var freight_all=0;  //總運費
  14.   
  15.   var n=data.values.length;
  16.   
  17.   var fields="";
  18.   
  19.   var field=["時間戳記","電子郵件地址","《酸酸檸檬派 - 3.5吋》請填寫欲訂購的數量","《布魯派 - 3.5吋》請填寫欲訂購的數量","《林果派 - 3.5吋》請填寫欲訂購的數量","《堅果派 - 3.5吋》請填寫欲訂購的數量","《酸酸檸檬派 - 6吋》請填寫欲訂購的數量","《布魯派 - 6吋》請填寫欲訂購的數量","《林果派 - 6吋》請填寫欲訂購的數量","《堅果派 - 6吋》請填寫欲訂購的數量","請選擇您的取貨方式","取貨人姓名","取貨人電話","取貨日期","取貨時間","收件人姓名","收件人電話","收件人地址","指定到貨日期","指定到貨時段(實際依黑貓送貨情況)"]  
  20.   var buy_amount=0;//購買數量
  21.   
  22.   var i,j;
  23.   
  24.   //顯示欄位名稱
  25.   show_field(namedValues);
  26.   
  27.   for (i = 0; i < n; i++) {
  28.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  29.     if(v!="")//有輸入的資料才顯示
  30.     {
  31.       html+=field[i]+":"+v+"<br/>";
  32.       if(price[field[i]]!=undefined) //有價格才計算
  33.       {
  34.         money+=price[field[i]]*v;
  35.                 //判斷數量是1/4或是1
  36.                 if(field[i].indexOf("3.5吋")>0) //若是3.5吋則算1/4數量
  37.                         buy_amount+=v/4;
  38.                 else
  39.                         buy_amount+=v;
  40.         
  41.       }
  42.      }
  43.   }
  44.   
  45.    
  46.   html+="您訂購派品金額為"+money+"元<br/>";
  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.   }


  68.   money+=freight_all;
  69.   html+="運費:"+freight_all+"元<br/>";
  70.   
  71.   
  72.   html+="總費用為"+money+"元<br/>";

  73.   
  74.   
  75.   html+="------轉帳匯款資訊------<br/>";
  76.   html+="銀行名稱:台灣銀行(代碼:004)<br/>";
  77.   html+="戶名:xxx<br/>";
  78.   html+="帳號:xxx-xxxx-xxxx<br/>";
  79.   html+="------請務必於2天內完成匯款轉帳,超過2天則視同棄單喔!------<br/>";
  80.   html+="------完成轉帳後請以此封mail回覆帳號後5碼,以利我們快速對帳,將您的訂單安排製作喔!------<br/>";
  81.   

  82. MailApp.sendEmail({
  83.     to: notifyEmail,
  84.     bcc:"xxxx@gmail.com",  //副件附本寄給您的email
  85.     subject: subject,
  86.     htmlBody: html
  87.   });

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

1570107039742.jpg
1570107075534.jpg
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-10-3 22:43:27 | 顯示全部樓層
Deborah 發表於 2019-10-3 20:47
老師您好,
謝謝您的回覆。請問我寫入您回覆的3.5吋程式碼,測試只有訂購3.5吋的運費是正確的,但測試訂購3 ...


那是因為輸入的數量是文字,沒有轉型別所造成,只要過經四則運算就會變成數字。
  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吋》請填寫欲訂購的數量":120,"《布魯派 - 3.5吋》請填寫欲訂購的數量":160,"《林果派 - 3.5吋》請填寫欲訂購的數量":120,"《堅果派 - 3.5吋》請填寫欲訂購的數量":140,"《酸酸檸檬派 - 6吋》請填寫欲訂購的數量":360,"《布魯派 - 6吋》請填寫欲訂購的數量":600,"《林果派 - 6吋》請填寫欲訂購的數量":420,"《堅果派 - 6吋》請填寫欲訂購的數量":420};
  11.   var money=0;
  12.   
  13.   var freight_all=0;  //總運費
  14.   
  15.   var n=data.values.length;
  16.   
  17.   var fields="";
  18.   
  19.   var field=["時間戳記","電子郵件地址","《酸酸檸檬派 - 3.5吋》請填寫欲訂購的數量","《布魯派 - 3.5吋》請填寫欲訂購的數量","《林果派 - 3.5吋》請填寫欲訂購的數量","《堅果派 - 3.5吋》請填寫欲訂購的數量","《酸酸檸檬派 - 6吋》請填寫欲訂購的數量","《布魯派 - 6吋》請填寫欲訂購的數量","《林果派 - 6吋》請填寫欲訂購的數量","《堅果派 - 6吋》請填寫欲訂購的數量","請選擇您的取貨方式","取貨人姓名","取貨人電話","取貨日期","取貨時間","收件人姓名","收件人電話","收件人地址","指定到貨日期","指定到貨時段(實際依黑貓送貨情況)"]  
  20.   var buy_amount=0;//購買數量
  21.   
  22.   var i,j;
  23.   
  24.   //顯示欄位名稱
  25.   show_field(namedValues);
  26.   
  27.   for (i = 0; i < n; i++) {
  28.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  29.     if(v!="")//有輸入的資料才顯示
  30.     {
  31.       html+=field[i]+":"+v+"<br/>";
  32.       if(price[field[i]]!=undefined) //有價格才計算
  33.       {
  34.         money+=price[field[i]]*v;
  35.                 //判斷數量是1/4或是1
  36.                 if(field[i].indexOf("3.5吋")>0) //若是3.5吋則算1/4數量
  37.                         buy_amount+=v/4;
  38.                 else
  39.                         buy_amount+=v*1;
  40.         
  41.       }
  42.      }
  43.   }
  44.   
  45.    
  46.   html+="您訂購派品金額為"+money+"元<br/>";
  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.   }


  68.   money+=freight_all;
  69.   html+="運費:"+freight_all+"元<br/>";
  70.   
  71.   
  72.   html+="總費用為"+money+"元<br/>";

  73.   
  74.   
  75.   html+="------轉帳匯款資訊------<br/>";
  76.   html+="銀行名稱:台灣銀行(代碼:004)<br/>";
  77.   html+="戶名:xxx<br/>";
  78.   html+="帳號:xxx-xxxx-xxxx<br/>";
  79.   html+="------請務必於2天內完成匯款轉帳,超過2天則視同棄單喔!------<br/>";
  80.   html+="------完成轉帳後請以此封mail回覆帳號後5碼,以利我們快速對帳,將您的訂單安排製作喔!------<br/>";
  81.   

  82. MailApp.sendEmail({
  83.     to: notifyEmail,
  84.     bcc:"xxxx@gmail.com",  //副件附本寄給您的email
  85.     subject: subject,
  86.     htmlBody: html
  87.   });

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


回復 支持 1 反對 0

使用道具 舉報

發表於 2019-10-4 00:33:43 | 顯示全部樓層
imingho 發表於 2019-10-3 22:43
那是因為輸入的數量是文字,沒有轉型別所造成,只要過經四則運算就會變成數字。

老師您好,
非常感謝您耐心的協助與回覆,除了這個問題解決了,我也透過下面這篇您的文章解決了宅配運費與面交免運的問題,非常開心,再次謝謝您,我會努力分享您的網站與產品。
http://discuz.bestdaylong.com/fo ... 9&fromuid=58291
回復 支持 反對

使用道具 舉報

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

本版積分規則

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

GMT+8, 2019-10-18 16:30 , Processed in 0.134019 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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