javascript, если функция не работает для индекса соответствия (скрипт приложения) - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь проверить, есть ли дубликаты телефонных номеров в столбце, а затем вернуть первый идентификатор, связанный с номером телефона, в скрипте приложений Google.

Я создал оператор if, согласно каждая ссылка, которую я проверял, я правильно ее кодировал. Скрипт работает но ничего не наполняет ??

Я определил диапазоны для счета, с которым связан номер телефона и идентификационный номер. Я указал его в правильном массиве my using map и использовал базовый оператор c if else.

Кажется, все работает, но оператор не выбрасывает номера идентификаторов. На самом деле ничего не происходит.

Пожалуйста, помогите ...

function myFunction() {

 var sss = SpreadsheetApp.openById('spreadsheetid'); // sss = source spreadsheet
 var ss = sss.getSheetByName('spreadsheetname'); // ss = source sheet

 var lr = ss.getLastRow();

  for (var i=3;i<lr;i++) {

   var phone = ss.getRange(i,4,lr).getValues();  
    var id = ss.getRange(i,1,lr).getValues();

   var phonearray = phone.map(function(r){return r[0]});

    if(phonearray == phone[i]){

    //emailarray.indexOf(email[i]) &&

    ss.getRange(i,30,lr).setValue(id[i]);


    } else

       ss.getRange(i,30,lr).setValue("");

   }
}

1 Ответ

0 голосов
/ 21 января 2020

Есть некоторые вещи, которые необходимо учитывать

  1. Диапазон значений - это двумерный массив, поэтому для доступа к значению отдельной ячейки вам нужно определить phone[i][0] вместо phone[i]
  2. Метод getRange требует синтаксиса getRange(startRow, startColumn, numRows) вместо getRange(startRow, startColumn, lastRow). Имейте это в виду, когда извлекаете интересующий вас диапазон.
  3. Для поиска дубликатов в вашем случае потребуется два (вложенных) цикла for.

Ниже приведен пример как вы можете изменить свой код для достижения желаемой функциональности:

function myFunction() {
 var sss = SpreadsheetApp.openById('spreadsheetid'); // sss = source spreadsheet
 var ss = sss.getSheetByName('spreadsheetname'); // ss = source sheet
 var lr = ss.getLastRow();
 var phones = ss.getRange(3,4,lr-3+1).getValues();  
 var ids = ss.getRange(3,1,lr-3+1).getValues();
 var phonearray = phones.map(function(r){return r[0]});
  for (var i=0;i<=(lr-3);i++) {
        var val = phones[i][0];
        var duplicates = [];
    for(var j = 0; j < phonearray.length; j++){
      if (phonearray[j] == val){
            duplicates.push(j);
      }
    }    
    if(duplicates.length>1){            
       Logger.log("duplicate");
      //emailarray.indexOf(email[i]) &&
      ss.getRange((i+3),30).setValue(ids[i]);
    } else{
       Logger.log("no duplicate");
       ss.getRange((i+3),30).setValue("");
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...