Сравнение новых и повторных телефонных номеров звонящего с помощью скрипта Google Apps - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть список номеров телефонов абонентов 73k, более 5 лет.Мне нужен накопительный хронологический список каждого уникального номера, чтобы я мог сравнить соотношение новых и повторных абонентов.

Я использую следующий код для извлечения только телефонных звонков в рабочее время и построения полного списка номеров -Я не могу заставить Google App Script создать уникальный список, поэтому я использую формулу = unique в Google Sheet, чтобы получить свой уникальный список абонентов -

    var ss19 = SpreadsheetApp.openById('1zkrkc2ZqT4KLDK5_-DDuyBsXj-t0p_kYyJbLArDWFfc')
    var cl19 = ss19.getSheetByName('2019 Log')
    var log19 = cl19.getRange(2, 1, cl19.getLastRow(), 5).getValues();
    var unique = resultSheet.getSheetByName('Unique');
    var callers = resultSheet.getSheetByName('Callers');
    var callerList = callers.getRange(1,2,callers.getLastRow(), 1).getValues();
        for( var i = 1; i<log19.length; i++){
            if(log19[i][4] > 0){
              if(log19[i][2].indexOf("Voicemail") == -1){
                if(log19[i][0].indexOf("(") == 0){
                longList.push([log19[i][0]])
                }
          }
            }
          }
          callers.getRange(1,2,longList.length,longList[0].length).setValues(longList)
        }

function getRatio() {
  var newCallers=[];
  var repeated=[];
  for(var i=0;i<callerList.length;i++) {//if there is a one line header start at var i=1
    if(newCallers.indexOf(callerList[i][1])==-1) {
      newCallers.push([callerList[i][1],callerList[i][0]]);//new callers array date and number
    }else{
      repeated.push([callerList[i][1]]);//repeated callers array date and number
    }
  }
//  return newCallers.length/repeated.length;
  Logger.log(newCallers.length)

1 Ответ

0 голосов
/ 25 февраля 2019

Соотношение новых и повторных абонентов

Предполагая, что даты указаны в столбце 1, а номера телефонов - в столбце 2.Это также позволит экспортировать абонентов, впервые звонивших и повторяющих вызовы, на два других листа (дата и номер).Вы можете сэкономить время, отсортировав их в электронной таблице, а затем запустив код без сортировки.

function getRatioOfNewToRepeatCallers() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Callers');
  var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());//Assuming a one row header
  var vA=rg.getValues();
  var newCallers=[];
  var newDC=[];
  var repeated=[];
  rg.sort({column:1,ascending:true});
  for(var i=0;i<vA.length;i++) {
    if(newCallers.indexOf(vA[i][1])==-1) {
      newCallers.push(vA[i][1]);//new callers array date and number
      newDC.push([vA[i][0],vA[i][1]]);
    }else{
      repeated.push([vA[i][0],vA[i][1]]);//repeated callers array date and number
    }
  }
  exportToSheet({dataA:newDC,sheetname:'New Callers'});
  exportToSheet({dataA:repeated,sheetname:'Repeated Callers'});
  Logger.log(newCallers.length/repeated.length);
  return newCallers.length/repeated.length;
}

function sheetExists(sheetname) {
  var ss=SpreadsheetApp.getActive();
  var allshts=ss.getSheets();
  var exists=false;
  for(var i=0;i<allshts.length;i++) {
    if(allshts[i].getName()==sheetname) {
      exists=true;
      break;
    }
  }
  return exists;
}

function exportToSheet(exportObj) {
  var ss=SpreadsheetApp.getActive();
  var sh;
  if(!sheetExists(exportObj.sheetname)){
    var sh=ss.insertSheet(exportObj.sheetname);
  }else{
    var sh=ss.getSheetByName(exportObj.sheetname);
  }
  sh.clear();
  sh.appendRow(['Date','Number']);
  sh.getRange(2,1,exportObj.dataA.length,2).setValues(exportObj.dataA);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...