我有一個 html 表單,我將資料傳遞給它并在此處獲取值。我想創建一個系統來捕捉重復相同的資料。我正在執行下面的 if 陳述句,該陳述句應該在輸入相同資料時捕獲,但它無法正常作業。問題是多次寫入相同的資料。
function processFormClients(formObject) {
var url = "LINK";
var ss = SpreadsheetApp.openByUrl(url);
var Clients = ss.getSheetByName("Clients");
var data = Clients.getDataRange().getValues();
for (var i = 0; i < data.length; i ) {
if(data[i][1] !== formObject.client_name) {
Clients.appendRow([
Math.floor(Math.random() * Date.now()),
formObject.client_name,
formObject.client_company,
formObject.client_budget,
]);
} else if (data[i][1] === formObject.client_name) {
console.log('failed')
}
}
uj5u.com熱心網友回復:
改裝要點:
- 在腳本中,當的“B”列
var data = Clients.getDataRange().getValues()不相同與價值formObject.client_name,Clients.appendRow是每次運行。只有當 的值與formObject.client_name相同時data[i][1],console.log('failed')才會運行。我認為這可能是您的問題的原因。
為了追加“B”列中不存在[Math.floor(Math.random() * Date.now()), formObject.client_name, formObject.client_company, formObject.client_budget]when的資料,formObject.client_name下面修改腳本怎么樣?
修改后的腳本:
function processFormClients(formObject) {
var url = "LINK";
var ss = SpreadsheetApp.openByUrl(url);
var Clients = ss.getSheetByName("Clients");
var search = Clients.getRange("B1:B" Clients.getLastRow()).createTextFinder(formObject.client_name).findNext();
if (search) {
console.log('failed');
return;
}
Clients.appendRow([
Math.floor(Math.random() * Date.now()),
formObject.client_name,
formObject.client_company,
formObject.client_budget,
]);
}
- 在此修改中,使用 TextFinder 檢查列“B”的重復值。當使用TextFinder 時,可以稍微降低處理成本。參考
- 運行此腳本時,僅當
formObject.client_name“客戶”表的“B”列中不存在時,Clients.appendRow才會運行。
參考:
- 創建文本查找器(查找文本)
- 類文本查找器
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/325127.html
