Декодирование ошибки: Ошибка типа: Не удается прочитать свойство «2» неопределенного

#google-apps-script #google-sheets #runtime-error #delete-row

Вопрос:

Я изо всех сил пытался понять, в чем я ошибся со следующим сценарием. Цель сценария состоит в том, чтобы удалить строку всякий раз, когда уникальный идентификатор в «individual_client_sheet» совпадает с идентификатором из строки на двух листах: «база данных clients_database» и «clients_sheet». До сих пор код может удалить соответствующую строку на каждом листе, но сообщение об ошибке «Ошибка типа: Не удается прочитать свойство» 2 «неопределенного» продолжает появляться, и я не могу понять, почему. Во-вторых, скрипт не сбрасывал бы поля в «individual_client_sheet», поэтому кажется, что он перестает работать после удаления записей. Вот сценарий:

    function deleteClientRecord () {
   // Get Active Sheets
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var shClient = ss.getSheetByName ('individual_client_sheet');
    var shData = ss.getSheetByName ('clients_database');
    var shClientsList = ss.getSheetByName ('clients_sheet');

   // Obtain and verify user response 
    var ui = SpreadsheetApp.getUi();
    var response = ui.alert ('Delete', 'Are you sure you want to remove this record?', ui.ButtonSet.YES_NO);

   if (response == ui.Button.NO) {
    return;
   }

   var searchValue = shClient.getRange('AF2').getValue();
   var shDataValues = shData.getDataRange().getValues();
   var shClientsListValues = shClientsList.getDataRange().getValues();


   // Delete record from 'clients_database'
      var shDataValuesFound = false; 

      for (var i = 0; i < shDataValues.length; i  ) {
      var rowValue = shDataValues[i]; 

       if (rowValue[3] == searchValue) {
        var iRow = i 1;
        shData.deleteRow(iRow);
       }
      }


  // Delete record from All CLients Sheet 
     var shClientsListValuesFound = false; 

     for (var j = 0; i < shClientsListValues.length; j  ) {
     var rowValue2 = shClientsListValues[j];

     if (rowValue2[2] == searchValue) {
      var jRow = j 1;
      shClientsList.deleteRow(jRow);

 ui.alert('Record deleted for - Client #'   shClient.getRange('AF2').getValue()   '');  
  }
 }

 // Delete Fields

 // Checkboxes 
   shClient.getRange('Z10:AA13').setValue(false);
   shClient.getRange('AP5:AQ5').setValue(false);
  
  // Basic Client Info
    shClient.getRange('B5:G5').clearContent(); // Business Name
    shClient.getRange('AF2').clearContent(); // Client ID
    shClient.getRange('B10').clearContent(); // website
    shClient.getRange('B12:B13').clearContent(); // billing add         
    shClient.getRange('B15:B16').clearContent(); // postal add 
    shClient.getRange('B18').clearContent(); // primary contact 
    shClient.getRange('B20').clearContent(); // phone
    shClient.getRange('B22').clearContent(); // email
    shClient.getRange('B26').clearContent(); // additional info 1          
    shClient.getRange('B28').clearContent(); // additional info 2 

  // Client Status 
    shClient.getRange('AN5:AO5').clearContent(); // client status
    shClient.getRange('AP5:AQ5').clearContent().setValue(false); // importance


  shClientsListValuesFound = true;
  shDataValuesFound = true;
 return;
}
 

Ответ №1:

Я предполагаю, что это строка ошибки:

  for (var j = 0; i < shClientsListValues.length; j  ) {
 

должно быть j вместо i :

  for (var j = 0; j < shClientsListValues.length; j  ) {
 

Комментарии:

1. лмао, да, я только что понял ошибку опечатки :’) Спасибо