#google-apps-script #google-sheets
#google-apps-script #google-sheets
Вопрос:
я пытаюсь убедиться, что моя программа проверяет, находится ли текст (посещенный) в определенной строке и столбце, и пропустить, если это так.
Но когда я его запускаю, программа по-прежнему обновляет посещенные данные и дату.
Код ниже..
function doGet(request) {
var sheet = SpreadsheetApp.openById(request.parameters.ssId).getActiveSheet();
var data = sheet.getDataRange().getValues();
var user = request.parameters.id;
var status = request.parameters.status;
for (var i=1; i<data.length; i ) {
var check = sheet.getRange(i,3).getValue();
if(check[i][0] != ATTENDED){
if (data[i][0] == user[0]){
sheet.getRange(i 1, 3,1,1).setValue(status[0]);
var date = new Date();
sheet.getRange(i 1, 2,1,1).setValue(date);
var result = "Welcome " user ".";
return ContentService.createTextOutput(result);
}
}
else{var resulted = "You have already registered! Thank you.";
return ContentService.createTextOutput(resulted);}
}
}
Ответ №1:
- Ваше условие
if(check[i][0] != ATTENDED)
- У вас нет вызываемой переменной
ATTENDED
- Если вы хотите сравнить данные таблицы со строкой
ATTENDED
, вам необходимо определить строку как таковую —"ATTENDED"
(учитывайте регистр символов) - Кроме того, если вы определяете
var check = sheet.getRange(i,3).getValue();
, вы присваиваетеcheck
одно значение, а не диапазон значений 2D (в отличие отgetValues()
) - Таким образом,
check[i][0]
не существует - Кроме того, я не знаю, как
request
это выглядит, но вам нужно перепроверить, если это массив, через который вы можете выполнять цикл