2015-10-06 51 views
1

我有一個Google表單,它有表單回覆。電子郵件地址不是必需的,但它應該是。無論哪種方式,我試圖回填電子郵件地址(爲了讓他們準備好導入Spiceworks門票,但我離題了)。我正在通過並輸入用戶名,但我希望表格自動填充域。我想我可以通過檢測字符串在@結束,然後只是將域添加到它來做到這一點。目前我有:Google表格if語句中的通配符

// assumes source data in sheet named Done 14-15 
    // test column with done is col 9 or I 

     if(s.getName() == "Done 14-15" && r.getColumn() == 9 && r.getValue() == "[email protected]") { 
     var row = r.getRow(); 
     var value = r.getValue(); 
     r.setValue(value + "example.org"); 
     var numColumns = s.getLastColumn(); 
     s.getRange(row, 1, 1, numColumns).copyTo(target); 
     } 

正如你所看到的,我有一個通配符的問號。我曾嘗試使用星號或百分比符號,但沒有獲得任何地方。它會取代如果我在那裏字面上[email protected],但我想它需要[email protected]並追加我們的域名。

回答

0

RegEx應該可以解決您的問題。

更換r.getValue() == "[email protected]"

var regEx = new RegExp('.*@$') 
if (regEx.test(r.getValue())) { 
    // your code 
} 
0

的電子郵件地址,可以很容易地更新這樣的:

var newValue = event.value.replace(/@$/,'@example.org'); 

凡沒有找到匹配,更換將不會發生...和newValue將等於原始值。在決定做某事之前,我不建議檢查比賽結果,而是檢查結果。

由於您是手動輸入電子郵件地址,因此這是onEdit()simple trigger and its event object的一個很好的應用程序。

function onEdit(event) { 
    var r = event.range; 
    var s = r.getSheet(); 

    if (s.getName() == "Done 14-15" && r.getColumn() == 9 && r.getRow() > 1) { 
    // Replace an @ at the end of the string with domain 
    var newValue = event.value.replace(/@$/,'@example.org'); 

    // If value changed, write it back to spreadsheet 
    if (event.value !== newValue) { 
     event.range.setValue(newValue); 
    } 
    } 
} 

如果您有已經被編輯過,需要被檢查行,這個功能會照顧他們。它使用How can I test a trigger function in GAS?中的技術創建假事件,然後將其傳遞給onEdit()觸發器函數。

// Call onEdit for each row in conversion sheet 
function convertAllEmails() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Done 14-15"); 
    var lastRow = sheet.getLastRow(); 
    for (var row=1; row<lastRow; row++) { 
    var fakeEvent = { 
     range: sheet.getRange(row,9); 
     value: range.getValue(); 
    }; 
    onEdit(fakeEvent); 
    } 
}