Попытка проверить, был ли столбец «посещен», а затем отобразить условие Else

#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 это выглядит, но вам нужно перепроверить, если это массив, через который вы можете выполнять цикл