Google脚本:测试Google表格行中是否已经存在值

时间:2018-12-14 00:07:48

标签: google-apps-script google-sheets

我是Google脚本的新手,并且我尝试仅将数据添加到Google表格中(如果该值不连续存在)。以下代码始终将数据添加到该行中(该数据正在运行并且起作用):

species_id  name                    month
1           Test species            6
20          Equisetum palustre      6
314         Holcus annuus           6
1825        Cirsium vuloare         6
2237        Agapanthus africanus    6
3126        Centaurea malacitana    6

species_id  name                    month
20          Equisetum palustre      4
20          Equisetum palustre      5
20          Equisetum palustre      6

我知道我需要添加

function doPost(e){
  return handleResponse(e);
}

function handleResponse(e) {
  var lock = LockService.getPublicLock();
  lock.waitLock(30000);  // wait 30 seconds before conceding defeat.
  try {
// set where I write the data
var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
var sheet = doc.getSheetByName(SHEET_NAME);
var column = sheet.getRange("A:A");  // like A:A
var values = column.getValues(); 
var addToSheet = false;
// header row is 1st row
var headRow = e.parameter.header_row || 1;
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow()+1; // get next row
var row = []; 
// loop through the header columns
for (i in headers){
  if (headers[i] == "Timestamp"){ 
    // special case if you include a 'Timestamp' column
    row.push(new Date());
  } else { 
    // else use header name to add to the array of values to add
    row.push(e.parameter[headers[i]]);
  }
}
// set all values at once
  sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);

// return json success results
return ContentService
      .createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))
      .setMimeType(ContentService.MimeType.JSON);
} catch(e){
// if error return json error
return ContentService
      .createTextOutput(JSON.stringify({"result":"error", "error": e}))
      .setMimeType(ContentService.MimeType.JSON);
  } finally { 
    //release lock
    lock.releaseLock();
  }
}

测试行中是否已存在任何传入的值,但这在Google脚本中不起作用。有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将行值读取为字符串,然后检查要查找的值的索引。如果不存在,则索引为-1

如果要检查数字,建议将valueToCheckFor转换为字符串。 (尽管我没有检查是否有必要,也无法告诉你)

这是避免单独检查所有单元格的厚脸皮方法。根据您的数据是什么,它可能不合适。如果您只检查文本,那应该没问题。

var stringValues = valuesToCheck.toString();
//The row values become a comma-separated string.

var stringExists = stringValues.indexOf(',' + valueToCheckFor + ',') > -1;
//check if value exists in string
//commas added to ensure whole cell is matched
//without commas, searching for 'dog' will match cells containing 'dogs', 'dogo', 'corn dog', etc.

if(!stringExists) {       
    row.push(valuesToPush);
}