繁体   English   中英

使用JavaScript在Google表格中清理数据

[英]Data cleaning in Google Sheets using JavaScript

我一直在Google Apps脚本中制定一种清理算法,以自动修剪从pdf剥离的图纸。

我已经花了几个小时来修改我已经获得的这段代码,并且完全弄不清楚我哪里出错了。

在此问题之前,案例逻辑不是很正确,但是脚本正在通过第一个if语句,第二个循环,第二个if语句,case语句; 成功删除无用的行。 那时并没有重置i和j属性,所以情况有点怪异。

现在,我已经修复了案例逻辑,它只是循环遍历i,并且无法识别通过第一条if语句进行第二遍循环,并且我被STUMPED处理。

如果我的格式/文档很粗糙,请提前道歉; 我几乎是自学成才,很高兴欢迎所有批评!

function ytdClean() {

var app = SpreadsheetApp;
var sheet = app.getActiveSpreadsheet().getSheetByName("Sheet1");
var sheetEnd = sheet.getLastRow();

for (var i = 1; i <= sheetEnd; i++) {                           //1. Loop i through column A 1:sheetEnd...

    var x = sheet.getRange(i, 1);
    Logger.log('x = ' + x.getValue());

    if (x.getValue() == '') {                                   //...until null entry x

        for (var j = x.getRow + 1; j <= sheetEnd; j++) {        //2. Loop j through column A from x + (1,0)...

            var y = sheet.getRange(j, 1);
            var z = sheet.getRange(j + 1, 1);
            Logger.log('y = ' + y.getValue());

            if (y.getValue() != '') {                           //...until non-null entry y; 

                var switchVal = z.getValue();
                Logger.log('z = ' + switchVal + '...');

                switch (switchVal) {                            //3. Switch

                    case "001":                                 //case: z = y + (1,0) = 001...

                        var a = x.getRow();
                        var b = y.getRow() - 1;
                        sheet.deleteRows(a, b - a);             //...delete rows of x through y...
                        i = a - 1;
                        Logger.log("...case 001");
                        break;                                  //...break;

                    case "01":                                  //case: z = 01...

                        var a = x.getRow();
                        var b = sheetend;
                        sheet.deleteRows(a, b - a);             //...delete rows between and including x, y and all rows after y;
                        i = a - 1;
                        Logger.log("...case 01");
                        break;                                  //...break;

                    default:                                    //case: 001 < z < 1000... 

                        var a = x.getRow();
                        var b = y.getRow();
                        sheet.deleteRows(a, b - a);             //...delete rows of x through y...
                        i = a - 1;
                        Logger.log("...default");
                        break;                                  //...break;

                    }

                }

            }

        }

    }

}

有人可以在这里看到我在做什么吗? 我已经尝试过在if语句中使用[null]而不是[''],但这不会改变任何事情。 仍然不对那些if语句感到遗憾...

Google表格处理数据的方式与JavaScript不同。 Google表格中没有null ,但是

  • Range.getValue()将返回'' (一个空字符串)

    • 用于空白单元格
    • 对于包含=""的单元格
    • 对于包含' (撇号)的单元格。

在某些情况下,上述情况很好,但在其他情况下则不行。

另外值得一提的是

  • Range.isBlank()将返回

    • 对于空白单元格为true
    • 对于包含=""的单元格为false
    • 对于包含' (撇号)的单元格为false

另一方面,JavaScript具有两个“相等”运算符,

  • == (相等又称为抽象相等)
  • === (身份ak严格相等)

有关

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM