在Google表格中,当该行中的一个单元格包含短语“ Delivered”时,我试图删除整行。 onEdit函数无法满足我的需要,因为它要求我在工作表生效之前手动对其进行编辑-这不是我想要的。我需要它自动[实时]删除行,因为单词“ Delivered”是通过实时网络查询{= index(IMPORTXML}(如果您没猜到的话,是发货跟踪))生成的。
在我意识到这不是我需要的东西之前,这里是我使用过onEdit的公式:
function onEdit(event) {
var s = SpreadsheetApp.getActiveSpreadsheet();
var r = SpreadsheetApp.getActiveRange();
// getColumn with "Delivered" is currently set to column 9 or I.
if(r.getColumn() == 9 && r.getValue() == "Delivered") {
var row = r.getRow();
s.deleteRow(row);
}
}
该公式旨在根据第9列中的“已交付”或“ I”一词删除整行。 onFormSubmit是否可以满足我的需求或onChange?如果是这样,我将如何构造公式?
答案 0 :(得分:1)
尝试一下:
function createTimeBasedTriggerIfYouDontAlreadyHaveOne() {
if(!isTrigger(deleteDeliveredRows)) {
ScriptApp.newTrigger(deleteDeliveredRows).timeBased().everyDays(1).atHour(0).create();
}
}
function deleteDeliveredRows() {
var ss=SpreadsheetApp.openById('ssid')
var sh=ss.getSheetByName('sheetname');
var rowStart=2;//assume 1 row for headers
var rg=sh.getRange(rowStart,1,sh.getLastRow()-rowStart+1,sh.getLastColumn());
var vA=rg.getValues();
var d=0;
for(var i=0;i<vA.length;i++) {
if(vA[i][8]=="Delivered") {
sh.deleteRow(i + rowStart - d++);
}
}
}
function isTrigger(funcName){
var r=false;
if(funcName){
var allTriggers=ScriptApp.getProjectTriggers();
for(var i=0;i<allTriggers.length;i++){
if(funcName==allTriggers[i].getHandlerFunction()){
r=true;
break;
}
}
}
return r;
}