Мне было интересно, знает ли кто-нибудь, можно ли искать значение вверх по столбцу вместо обычного вверх или вниз в столбце.
Причина, по которой я спрашиваю, заключается в том, что в настоящее время я готовлю лист посетителя, который будет записан в Google Sheets, который поступает из Google Forms.
Каждому посетителю будет присвоен идентификационный номер / номер пропуска, который будет использоваться для записи времени его входа и выхода.
Проблема теперь в том, что, если два человека используют один и тот же идентификатор, он изменит только время входа и выхода начальной записи, а не самую последнюю.
Поэтому мне было интересно, знает ли кто-нибудь или это возможно, чтобы скрипт мог искать вверх вместо этого (чтобы более новая запись была найдена первой), или если кто-то знает команду, чтобы она не перезаписывала предыдущую запись ( игнорируйте запись, в которой уже есть время, записанное в ячейке), что было бы здорово.
Я уже пытался отсортировать его в новую вкладку, используя QUERY и IMPORTRANGE, но тогда я не могу записать время на новую вкладку.
var ss = SpreadsheetApp.openByUrl("sheet_url");
var sheet = ss.getSheetByName("Sheet_name");
function doGet(e){
var action = e.parameter.action;
if(action == "in")
return inTime(e);
if(action == "out")
return outTime(e);
}
function doPost(e){
var action = e.parameter.action;
if(action == "in")
return inTime(e);
if(action == "out")
return outTime(e);
}
function inTime(e){
var id = e.parameter.id;
var values = sheet.getRange(2,1,sheet.getLastRow(),1).getValues();
for(var i = 0 ; i<values.length ; i++){
if(values[i][0] == id){
i=i+2;
var in_time = Utilities.formatDate(new Date(), "GMT+8", "HH:mm:ss");
sheet.getRange(i,8).setValue(in_time);
return ContentService.createTextOutput("Check In Time "+in_time).setMimeType(ContentService.MimeType.TEXT);
}
return ContentService.createTextOutput("Id Not Found").setMimeType(ContentService.MimeType.TEXT);
}
function outTime(e){
var id = e.parameter.id;
var values = sheet.getRange(2,1,sheet.getLastRow(),1).getValues();
for(var i = 0 ; i<values.length ; i++){
if(values[i][0] == id){
i=i+2;
var out_time = Utilities.formatDate(new Date(), "GMT+8", "HH:mm:ss");
sheet.getRange(i,9).setValue(out_time);
return ContentService.createTextOutput("Check Out Time "+out_time).setMimeType(ContentService.MimeType.TEXT);
}
}
return ContentService.createTextOutput("Id Not Found").setMimeType(ContentService.MimeType.TEXT);
}