3

Я намерен запустить свой скрипт на Google листВы не можете конвертировать CjwKEAjwiYG9BRCkgK-G45S323oSJABnykKAhI-

Что я делаю, чтобы восстановить значение ячеек, и если оператор использовать для сравнения ячейки идентификатора с другой ячейкой userid.

Если они разные, я хочу исключить эту целую строку, если они равны. Я хочу оставить всю строку такой, какой она есть.

я получаю ошибку:

You can not convert CjwKEAjwiYG9BRCkgK-G45S323oSJABnykKAhI-

Мой код:

function myFunction() { 
    function Lento() { 
     var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
     var sheet = spreadsheet.getActiveSheet(); 
     var rows = sheet.getDataRange(); 
     var values = rows.getValues(); 
     var numCols = rows.getNumColumns(); 
     var numRows = rows.getNumRows(); 
     for (var r=1; r<values.length; r++) { 
      var row = values[r], 
       identificador = row[0], 
       palabraclave = row[1], 
       ciudad = row[2], 
       fecha = row[4], 
       pais = row[5], 
       idusuario = row[6], 
       nombre = row[7], 
       email = row[8], 
       telefono = row[9], 
       mensaje = row[10], 
       urllanding = row[11], 
       fechausuario = row[12]; 

      Logger.log(identificador); 
      Logger.log(palabraclave); 
      Logger.log(ciudad); 
      Logger.log(fecha); 
      Logger.log(pais); 
     } 

     if (row[0] !== row[6]) { 
      spreadsheet.deleteRow(row); 
     } 
    } 

    Lento(); 
} 
+0

Пожалуйста, см [спросить] и [Идеальный вопрос] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). – FrankerZ

+0

любая подсказка, какая строка вашего кода вызывает ошибку? –

ответ

1

Я думаю, ваша проблема с spreadsheet.deleteRow(row). Во-первых, вы хотите удалить строку на этом конкретном листе, поэтому она должна быть sheet.deleteRow(...). Другая проблема заключается в том, что deleteRow ожидает целое число в качестве аргумента, но вы предоставили row, который представляет собой массив. Чтобы удалить строку, вы хотите сделать

sheet.deleteRow(r+1); 

потому r это целое связано с положением в массиве, а не row. Обратитесь к документации по deleteRow(rowPosition):

https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleterowrowposition

+0

Здравствуйте, Я мог бы пойти дальше в своем коде, теперь я сохраняю массив GCLID на листе и другом листе и сравниваю, но при удалении строки мне говорят, что эти строки превышают лимиты. – AitorUdabe

0

Теперь у меня есть решение, что я делаю.

, а также дает ошибки, поскольку comprovación массива null, поэтому не работает, код будет выглядеть.

function myFunction() { 
function Lento() { 
    var h1 = SpreadsheetApp.getActive().getSheetByName('Hoja 1'); 
    var h2 = SpreadsheetApp.getActive().getSheetByName('Hoja 2'); 
    var rowsh1 = h1.getDataRange(); 
    var valuesh1 = rowsh1.getValues(); 
    var numColsh1 = rowsh1.getNumColumns(); 
    var numRowsh1 = rowsh1.getNumRows(); 
    var rowsh2 = h2.getDataRange(); 
    var valuesh2 = rowsh2.getValues(); 
    var numColsh2 = rowsh2.getNumColumns(); 
    var numRowsh2 = rowsh2.getNumRows(); 
    var idusuario = []; 
    var identificador = []; 
    //recorremos fila a fila y cogemos los datos de la hoja1 
    for (var r = 1; r < valuesh2.length; r++) { 
     var rowh2 = valuesh2[r], 
      nombre = rowh2[1], 
      email = rowh2[2], 
      telefono = rowh2[3], 
      mensaje = rowh2[4], 
      urllanding = rowh2[5], 
      fechausuario = rowh2[6]; 
     idusuario[r] = rowh2[0]; //Guardamos los gclid del usuario en un array 

    } 
    //recorremos fila a fila y cogemos los datos de la hoja2 
    for (var r = 1; r < valuesh1.length; r++) { 
     var rowh1 = valuesh1[r], 
      palabraclave = rowh1[1], 
      ciudad = rowh1[2], 
      fecha = rowh1[4], 
      pais = rowh1[5]; 
     identificador[r] = rowh1[0]; //Guardamos los gclid en un array 

    } 


    for (var i = identificador.length - 1; i >= 0; i--) { 
     var encontrado = false; 
     for (var y = 1; y < idusuario.length; y++) { 

      if (identificador[i] == null || idusuario[y] == null) continue; 
      if (identificador[i] == idusuario[y]) { 
       encontrado = true; 
       break; 
      } 
     } 

     if (!encontrado) { 

      h1.deleteRow(i + 1); 
     } 
    } 

} 

Lento(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^