我是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脚本中不起作用。有什么建议吗?谢谢!
答案 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);
}