我正在尝试创建一个脚本,该脚本将根据该行内单元格中的字符串删除行,
如果我想为每张纸命名,我可以完成我的任务,但是我的纸张不断更改名称,因此这意味着每天更新脚本。 我试图创建一个循环,但这似乎也不起作用,任何建议?
我正在处理的脚本如下。
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++;
}
}
}
}
};
答案 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
}
}