2014-02-07 69 views
0

可以要求用戶在FORM中寫下他們的電子郵件地址,之後他們會收到具有唯一號碼的電子郵件地址?適用於表單的Google Apps腳本:想要通過電子郵件向用戶發送特定號碼

我找出如何發送自動發送郵件,在這裏提交 - http://www.labnol.org/internet/auto-confirmation-emails/28386/

但不知道如何發送給他唯一的號碼每!

+0

你要送他回去什麼樣的唯一的號碼?您可以向他發送表格回覆的唯一編號或例如他的電子郵件地址的MD5:在Amit Agarwal腳本中替換:message =「我們已收到您的詳細信息
謝謝!

您的唯一ID:」+ Utilities。 base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5,e.namedValues [「Email Address」]。toString())); – Harold

+0

我想發送用戶「表單回覆的唯一ID」。最好從1開始,然後用其他數字去追蹤......但是我也需要自己得到這個數字,並將它放置在爲我的驅動器窗體自動創建的表格中。 – Muhahaha

回答

0

您可以嘗試上面的代碼來檢索窗體響應的唯一ID。但它不是排序數字(1,2,...)。這是由表單生成的唯一隨機數。我的建議並不是嘗試構建從1開始並繼續前進的內容,因爲它是異步的,您沒有安全性來擁有分類的項目列表。詳情請參閱here

/** 
* for a form with 2 question named "question 1" and "question 2" 
* this function need to be associated directly to the form 
* and it need to be associated to a trigger "on form submit" 
* the "e" given as argument is generated by the form submit trigger 
*/ 
function submitFormFunc(e) { 
    var items = e.response.getItemResponses(); 
    var responses={}; 
    for(var i = 0; i< items.length; i++) { 
    responses[items[i].getItem().getTitle()]=items[i].getResponse(); 
    } 

    var responseTable = []; 
    var responseIndex = ["Timestamp","ID","question 1","question 2"]; 
    responseTable.push(e.response.getTimestamp().toString()); 
    responseTable.push(e.response.getId()); 
    responseTable.push(responses["question 1"]); // my form have 2 questions named "question 1" and "question 2" 
    responseTable.push(responses["question 2"]); 
    responseTable.push(FormApp.getActiveForm().getResponse(e.response.getId()).getEditResponseUrl()); 
    SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").appendRow(responseTable); 
} 

- 編輯 -

,如果你想要的東西更短,您可以使用時間戳:

改變(或增加)responseTable.push(e.response.getTimestamp().toString());

responseTable.push(e.response.getTimestamp().getTime().toString()); 

,甚至更短,但效率稍差:

您可以添加一行:

responseTable.push(generateUnique()); 

,並添加功能:

function generateUnique(){ 
    var vals = SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").getRange("A:A").getValues(); 
    var ids=[]; 
    for(var i in vals){ 
    ids.push(vals[0]); 
    } 
    var newId = Math.floor(Math.random()*100); // change 100 for something bigger if needed 
    while(ids.indexOf(newId)>-1){ 
    newId = Math.floor(Math.random()*100); 
    } 
    Logger.log(newId); 
    return(newId); 
} 
+0

哈羅德感謝您的時間!我設法使代碼成功,並且正在工作,但發送給我:您的唯一ID:gJnyU5iJKgI32Ep/UCKqWg == 這太複雜了。表格是爲體育比賽註冊收集數據的必要條件,用戶需要知道他們的號碼,我們也需要知道用戶號碼。但我們在這裏需要一些簡單的數字..不是這種數字和字母..怎麼做? 每個用戶在向我們發送他的信息時都有特定的TimeStamp。如何發送用戶這個TimeStamp。在這種情況下,TimeStamp將成爲我們想要的唯一編號! – Muhahaha

+0

我編輯了anwser,所以你可以使用時間戳,甚至更短的標記 – Harold

+0

Harlond謝謝,但我不是一個程序員,也不知道如何放置此代碼的工作。我可以要求你在這裏看到我的整個代碼,並告訴我如何添加TimeStamp到它:https://docs.google.com/document/d/1UZDUzuMjm5RaNU1FOneoDBefstpJh3D4GbSdQvBhBSY/edit?usp=sharing – Muhahaha

相關問題