你不能将CjwKEAjwiYG9BRCkgK-G45S323oSJABnykKAhI-转换

3
我打算在Google表格上运行我的脚本。
我正在做的是恢复单元格的值,并使用if语句将标识符单元格与另一个用户ID单元格进行比较。
如果它们不同,我想要删除整个行,如果它们相等,我想保留整个行不变。
我得到了错误:
“无法转换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();
}

请参考提问的智慧 - Blue
你有任何线索知道哪一行代码产生了错误吗? - Jaromanda X
2个回答

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


你好,我在我的代码中遇到了一些问题,现在我正在使用一个数组GCLIDs和另一个表格进行比较。但是当我删除行时,系统提示我超出了限制。 - AitorUdabe

0

现在我有解决方案了。

由于数组的检查为空,因此会出现错误,代码如下。

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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接