彰化一整天的論壇

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

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

  [複製鏈接]
 樓主| 發表於 2021-8-2 20:34:02 | 顯示全部樓層
pi5mi4 發表於 2021-8-1 17:49
老師您好:
我先嘗試第二種做法,以我的程度是無法自己完成,再請您指教.感謝了 ...

請參考.
(運費依金額變化含免運費及要運費產品)
http://discuz.bestdaylong.com/thread-39352-1-1.html
(出處: 彰化一整天的論壇)

錄影說明.會在這禮拜四錄制.
回復 支持 反對

使用道具 舉報

發表於 2021-8-3 15:03:34 | 顯示全部樓層
老師太感謝您了,好期待您的錄影說明
回復 支持 反對

使用道具 舉報

發表於 2021-8-3 20:47:39 | 顯示全部樓層
太好了,剛剛已經修改測試成功,老師太厲害,請接受我最深切的感謝!
回復 支持 反對

使用道具 舉報

發表於 2021-8-9 01:14:32 | 顯示全部樓層
本帖最後由 justdoit00 於 2021-8-9 02:30 編輯

老師好 不好意思 想問一下 我有改錯什麼嗎? 信件一直沒辦法寄出  

執行後 一直顯示上午1:13:56        錯誤        
TypeError: Cannot read property 'namedValues' of undefined
autoSendmail        @ 程式碼.gs:4

請問要如何改善呢?  我的產品是滿千才免運,所以我就照著老師的程式碼直接改 一開始還有寄信,但是後面不知道是哪邊出錯了 ,就沒有寄了,不知道是不是運費設定那邊出了問題? 麻煩老師了 謝謝您

老師不好意思 我改正完畢了  少貼一段程式碼QQ  謝謝老師 很實用很NICE的分享!!

function autoSendmail(data) {
  var subject = "醬爽-網路訂購單 表單自動通知", // 信件標題
      emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
      namedValues = data.namedValues,
      values=data.values,      
      notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
      html = "";
  
  //設定產品價格,選項名稱內容
  var price={"2瓶原價$499/→特價$459<運費100>":459,"4瓶原價$998/→特價$918<運費100>":918,"6瓶原價$1497→特價$1299<免運>":1299,"8瓶原價$1996→特價$1758<免運>":1758,"10瓶原價$2495→特價$2217<免運>":2217,"12瓶原價$2994→特價$2499<免運!現省!495>":2499,"是(加100元運費差額)":100};

  var money=0;
  
  var free_shipping_money=1000; //設定免運費金額
  
  var freight=100;//設定運費金額
  
  var n=data.values.length;
  
  var fields="";
  
  var field=["時間戳記","電子郵件地址","請問您想購買的數量","指定配送時間","您的姓名","性別","聯絡電話","寄送地址","產品選擇 ex:6紅6綠","其他說明"]
  
  var d="";
  
  var i,j;
  
  
  html="<img src='https://i.imgur.com/3BI7Sli.jpg'><br/>";  //設定Logo圖片
  
  html+="<div style='color:black'>";
  for (i = 0; i < n; i++) {
    v= namedValues[field] ? namedValues[field][0]:"" ;
    if(v!="")//有輸入的資料才顯示
    {
      if(field_color[field]!=undefined) //有顏色再設定
         html+="<font color="+field_color[field]+">"+field+"</font>"+":"+v+"<br/>";
      else
         html+=field+":"+v+"<br/>";
      if(price[v]!=undefined) //選項有價格才加入費用
        money+=price[v];         
     }
  }
  
  html+="您購買"+money+"元<br/>";
  
    var shop_kind=namedValues["請問您想購買的數量"] ? namedValues["請問您想購買的數量"][0]:""; //設定免運商品
  
  if(shop_kind=="2瓶原價$499/→特價$459<運費100>","4瓶原價$998/→特價$918<運費100>")
  {
    if(money<free_shipping_money)
    {
      money+=freight
      html+="運費:"+freight+"元<br/>";
    }
    else
    {
      html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
    }
  }
   
  html+="總費用為"+money+"元<br/>";
  
  
  
  html+="-----轉帳匯款資訊------------<br/>";
  html+="銀行名稱:XXXX商業銀行(代碼:XXX)<br/>";
  html+="分行名稱:XX分行<br/>";
  html+="帳號:4XX5-4XX1-3XX8<br/>";
  
  html+="</div>";
            
  MailApp.sendEmail({
    to: notifyEmail,
    subject: subject,
    htmlBody: html
  });
  
  //將總金額回填儲存格
  var sheet =SpreadsheetApp.getActiveSheet();
  var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  sheet.getRange("M"+LastRow).setValue(money);//將資料寫到M欄的最後一筆
  
}
function test()
{
    var sheet =SpreadsheetApp.getActiveSheet();
   
    Logger.log(sheet.getSheetValues(1,1,1,1));   
  sheet.getActiveCell().getLastRow();
  
}
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-8-9 10:32:45 | 顯示全部樓層
justdoit00 發表於 2021-8-9 01:14
老師好 不好意思 想問一下 我有改錯什麼嗎? 信件一直沒辦法寄出  

執行後 一直顯示上午1:13:56        錯 ...

請參考.
如何在discuz張貼程式碼
http://discuz.bestdaylong.com/thread-30239-1-1.html

執行出現TypeError: 無法讀取 undefined 的「namedValues」屬性。
http://discuz.bestdaylong.com/thread-38842-1-1.html
回復 支持 反對

使用道具 舉報

發表於 2021-8-30 21:56:34 | 顯示全部樓層
本帖最後由 陸曉妍 於 2021-8-30 22:30 編輯

老師您好
我修改完,下單後收到的明細排序是亂的,麻煩老師幫我看看那裏有問題 謝謝
function autoSendmail(data) {
  var subject = "天使的微笑手作甜點工房 Le Sourire d'Ange", // 信件標題
      emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
      namedValues = data.namedValues,
      notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
      html = "";

  //設定產品價格
  var price={"巴斯克乳酪蛋糕6吋.切片[6吋420元]":420,"巴斯克乳酪蛋糕6吋.切片[切片70元]":70,"芋頭巴斯克乳酪蛋糕6吋.切片[6吋460元]":460,"芋頭巴斯克乳酪蛋糕6吋.切片[切片裝80元]":80,"帕瑪森生乳酪蛋糕整條.1/3條[整條 250元]":250,"帕瑪森生乳酪蛋糕整條.1/3條 [1/3條85元]":85," 楓糖芋頭布丁蛋糕盒200元 ":200,"天然香草籽菠蘿泡芙50元 (完售)":50,"極鮮布丁塔65元":65,"野生藍莓吐司 125元(完售)":125,"冰心煉乳維也納50元":50,"芥末籽脆腸麵包40元":40,"水果巨蛋麵包50元(限30顆)":50,"日式黑糖牛奶麻吉麵包45元(限25顆)":45,"  靜岡抹茶紅豆麻吉麵包2入/袋70元(限25袋)":70,"英式伯爵葡萄司康2入59元":59};

  var money=0;

  Object.keys(namedValues).forEach(function(key) {
    if(namedValues[key]!="")//有輸入的資料才顯示
    {
      html+=key+":"+namedValues[key]+"<br/>";
      if(price[key]!=undefined) //有價格才計算
        money+=price[key]*Number(namedValues[key]);
    }

  });  

  html+="您總共購買"+money+"元";


  MailApp.sendEmail({
    to: notifyEmail,
    subject: subject,
    htmlBody: html
  });

}
IMG_2244.jpg






回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-8-31 09:12:13 | 顯示全部樓層
陸曉妍 發表於 2021-8-30 21:56
老師您好
我修改完,下單後收到的明細排序是亂的,麻煩老師幫我看看那裏有問題 謝謝
function autoSendmail ...

Google 表單欄位順序顯示
http://discuz.bestdaylong.com/thread-38874-1-1.html
(出處: 彰化一整天的論壇)
回復 支持 反對

使用道具 舉報

發表於 2021-9-24 14:44:01 | 顯示全部樓層
蔡老師:
看了您的YouTube教學
Copy全部程式碼,沒改行也沒新增

如下:


function autoSendmail(data) {
  var subject = "蒸的!", // 信件標題
      emailTitle = "電子郵件地址", // 表單中收件者 email 這個項目的標題
      namedValues = data.namedValues,
      values=data.values,      
      notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
      html = "";

  //設定產品價格,選項名稱內容
  var price={"蔓越莓":150,"四色":150,"彩虹":150};

  var money=0;

  var free_shipping_money=2000; //設定免運費金額

  var freight=160;//設定運費金額

  var n=data.values.length;

  var fields="";

  var field=["時間戳記","電子郵件地址","蔓越莓"," 四色"," 彩虹  ","取貨方式","指定配送時間","哪裡得知","姓名","郵遞區號 及 住址","手機電話","希望郵差怎尊稱你","其他說明"]

  var field_color={"蔓越莓":"#ff0000","四色":"#00ff00"," 彩虹":"#ff0000"}; //設定產品字型顏色

  var d="";

  var i,j;


  html="<img src='http://bestdaylong.com/images/sheep_ice.jpg'><br/>"; //設定Logo圖片

  html+="<div style='color:black'>";
  for (i = 0; i < n; i++) {
    v= namedValues[field] ? namedValues[field][0]:"" ;
    if(v!="")//有輸入的資料才顯示
    {
      if(field_color[field]!=undefined) //有顏色再設定
         html+="<font color="+field_color[field]+">"+field+"</font>"+":"+v+"<br/>";
      else
         html+=field+":"+v+"<br/>";
      if(price[v]!=undefined) //選項有價格才加入費用
        money+=price[v];        
     }
  }

  html+="您購買"+money+"元<br/>";

  //判斷只有滴雞精才要算運貨
  var shop_kind=namedValues["請問您想購買的產品"] ? namedValues["請問您想購買的產品"][0]:""; //設定免運商品

  if(shop_kind=="滴雞精")
  {
    if(money<free_shipping_money)
    {
      money+=freight
      html+="運費:"+freight+"元<br/>";
    }
    else
    {
      html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
    }
  }
   
  html+="總費用為"+money+"元<br/>";

  html+="</dvi><div style=\"color:purple\">" ;


  html+="-----轉帳匯款資訊------------<br/>";
  html+="銀行名稱:兆豐國際商業銀行(代碼:017)<br/>";
  html+="分行名稱:竹北分行<br/>";
  html+="戶名:彰化一整天<br/>";
  html+="帳號:000-00-000000<br/>";

  html+="</div>";
           
  MailApp.sendEmail({
    to: notifyEmail,
    subject: subject,
    htmlBody: html
  });

  //將總金額回填儲存格
  var sheet =SpreadsheetApp.getActiveSheet();
  var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  sheet.getRange("u"+LastRow).setValue(money);//將資料寫到u欄的最後一筆

}
function test()
{
    var sheet =SpreadsheetApp.getActiveSheet();
   
    Logger.log(sheet.getSheetValues(1,1,1,1));  
  sheet.getActiveCell().getLastRow();

}



跑出來總金額是0
請教為啥?謝謝您



https://myppt.cc/THYy7q


執行為:
https://myppt.cc/4IqJJL




回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-9-24 15:25:06 | 顯示全部樓層
本帖最後由 imingho 於 2021-9-25 07:37 編輯
amei2569 發表於 2021-9-24 14:44
蔡老師:
看了您的YouTube教學
Copy全部程式碼,沒改行也沒新增

請參考.
如何在discuz張貼程式碼
http://discuz.bestdaylong.com/thread-30239-1-1.html

執行出現TypeError: 無法讀取 undefined 的「namedValues」屬性。
http://discuz.bestdaylong.com/thread-38842-1-1.html


google_form_20210924a.jpg

您的這個欄位在程式碼中看不到它的設定值.

回復 支持 反對

使用道具 舉報

發表於 2021-9-25 11:10:32 | 顯示全部樓層
蔡老師您好
程式碼是:

  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={"蔓越莓":150,"四色":150,"彩虹":150};

  10.   var money=0;

  11.   var free_shipping_money=2000; //設定免運費金額

  12.   var freight=160;//設定運費金額

  13.   var n=data.values.length;

  14.   var fields="";

  15.   var field=["時間戳記","電子郵件地址","蔓越莓","四色","彩虹","取貨方式","指定配送時間","哪裡得知","姓名","郵遞區號 及 住址","手機電話","希望郵差怎尊稱你","其他說明"]

  16.   var field_color={"蔓越莓":"#ff0000","四色":"#00ff00","彩虹":"#ff0000"}; //設定產品字型顏色

  17.   var d="";

  18.   var i,j;


  19.   html="<img src='http://bestdaylong.com/images/sheep_ice.jpg'><br/>"; //設定Logo圖片

  20.   html+="<div style='color:black'>";
  21.   for (i = 0; i < n; i++) {
  22.     v= namedValues[field[i]] ? namedValues[field[i]][0]:"" ;
  23.     if(v!="")//有輸入的資料才顯示
  24.     {
  25.       if(field_color[field[i]]!=undefined) //有顏色再設定
  26.          html+="<font color="+field_color[field[i]]+">"+field[i]+"</font>"+":"+v+"<br/>";
  27.       else
  28.          html+=field[i]+":"+v+"<br/>";
  29.       if(price[v]!=undefined) //選項有價格才加入費用
  30.         money+=price[v];        
  31.      }
  32.   }

  33.   html+="您購買"+money+"元<br/>";

  34.   //判斷只有滴雞精才要算運貨
  35.   var shop_kind=namedValues["請問您想購買的產品"] ? namedValues["請問您想購買的產品"][0]:""; //設定免運商品

  36.   if(shop_kind=="滴雞精")
  37.   {
  38.     if(money<free_shipping_money)
  39.     {
  40.       money+=freight
  41.       html+="運費:"+freight+"元<br/>";
  42.     }
  43.     else
  44.     {
  45.       html+="運費:免費(滿"+free_shipping_money+"元)<br/>";
  46.     }
  47.   }
  48.    
  49.   html+="總費用為"+money+"元<br/>";

  50.   html+="</dvi><div style="color:purple">" ;


  51.   html+="-----轉帳匯款資訊------------<br/>";
  52.   html+="銀行名稱:兆豐國際商業銀行(代碼:017)<br/>";
  53.   html+="分行名稱:竹北分行<br/>";
  54.   html+="戶名:彰化一整天<br/>";
  55.   html+="帳號:000-00-000000<br/>";

  56.   html+="</div>";
  57.            
  58.   MailApp.sendEmail({
  59.     to: notifyEmail,
  60.     subject: subject,
  61.     htmlBody: html
  62.   });

  63.   //將總金額回填儲存格
  64.   var sheet =SpreadsheetApp.getActiveSheet();
  65.   var LastRow=sheet.getActiveCell().getLastRow(); //取得最後一列
  66.   sheet.getRange("u"+LastRow).setValue(money);//將資料寫到u欄的最後一筆

  67. }
  68. function test()
  69. {
  70.     var sheet =SpreadsheetApp.getActiveSheet();
  71.    
  72.     Logger.log(sheet.getSheetValues(1,1,1,1));  
  73.   sheet.getActiveCell().getLastRow();

  74. }
複製代碼


但收到mail為0
https://myppt.cc/mYhP8g

請問是哪裡有錯?
謝謝您
回復 支持 反對

使用道具 舉報

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

本版積分規則

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

GMT+8, 2021-10-19 06:25 , Processed in 0.121019 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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