根据单元格的值从所有Google工作表中删除行

时间:2018-04-10 18:32:23

标签: google-apps-script google-sheets google-sheets-api

我正在尝试创建一个脚本,该脚本将根据该行内单元格中的字符串删除行,

如果我想为每张纸命名,我可以完成我的任务,但是我的纸张不断更改名称,因此这意味着每天更新脚本。 我试图创建一个循环,但这似乎也不起作用,任何建议?

我正在处理的脚本如下。

function RemoveInvoiced() {

var ss = SpreadsheetApp.openById("1pxWr3jOYZbcwlFR7igpSWa9BKCa2tTeliE8FwFCRTcQ").getSheets();
for (var k=0; k<ss.length; k++)
var values = ss[k].getDataRange().getValues();

var rows_deleted = 0; 

for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {

        var value = values[i][j];

        var row = i + 1 - rows_deleted;

        if (typeof value === 'string') {

            var result = value.search("INVOICED");

            if (result !== -1) {
                ss.deleteRow(row);
                rows_deleted++;
            }
        }  
    }
}
};

1 个答案:

答案 0 :(得分:-1)

您可以通过ID访问它们,而不是使用工作表名称来访问它们。 只要您不删除工作表,即使您更改了名称,ID也不会更改。

您首先必须获取工作表ID,一个简单的功能可以为您做到这一点

 function getId(sheet){
     Logger.log(sheet.getSheetId());
 }

获得工作表ID后,您可以创建一个能够通过ID打开正确工作表的功能

function openSheetById(doc, id){
    var sheets = doc.getSheets();
    for(var i = 0; i< sheets.length ; i++){
         if( sheets[i].getSheetId() == id)
              return sheets[i];
    }
    return false;
}

然后你可以访问正确的表格。

function myFunc(){
     var doc = SpreadsheetApp.openById("1pxWr3jOYZbcwlFR7igpSWa9BKCa2tTeliE8FwFCRTcQ");
     var id = // your id here
     var sheet = openSheetById(doc, id);

     if(sheet){
          //do other stuffs
     }
}