[英]How to delete rows that do not containing specific text within A column using Google Sheets App?
我是 Google Apps Scripts 的新手,所以如果我的問題是多余的,我很抱歉。
我正在這里處理腳本的變體:
(這是我一直在編輯的腳本——注意空的 IF 值。)
function onOpen(){
}
function deleteFunction(){
var sheetName = "Title";
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName(sheetName);
var dataRange = sheet.getDataRange();
var numRows = dataRange.getNumRows();
var values = dataRange.getValues();
var rowsDeleted = 0;
for (var i = 2; i <= numRows; i++){
var rowValues = values[i-1].toString();
if (rowValues == ""){
sheet.deleteRow(i - rowsDeleted);
rowsDeleted++;
}
我想刪除名為“Title”的工作表中不包含“| My Text Here”的行。 文本是在文本字符串中找到的,例如“這里是可能是隨機的文本字符串| 我的文本在這里”。 因此,如果在單元格中找不到“| My Text Here”,我希望刪除整行。
我希望它使用的數據集將有大約 10,000 行,我希望這個腳本在工作表打開時運行或每天運行一次。
我已經嘗試完成這項工作,但我認為我走錯了路,所以真的很感謝社區的幫助!
如果需要,我可以附上測試表。
預先感謝您的幫助和指導
新腳本:
function main() {
var SS = SpreadsheetApp.getActive();
var SHEET = SS.getSheetByName("Title");
var RANGE = SHEET.getDataRange();
var DELETE_VAL = "| TEST TEXT HERE";
var COL_TO_SEARCH = 0; //Zero is first
var deleteSelectedRows = removeThenSetNewVals();
};
function removeThenSetNewVals(){
var SS = SpreadsheetApp.getActive();
var SHEET = SS.getSheetByName("Title");
var RANGE = SHEET.getDataRange();
var rangeVals = RANGE.getValues();
var DELETE_VAL = "| TEST TEXT HERE";
var COL_TO_SEARCH = 0; //Zero is first
var newRangeVals = [];
for(var i = 0; i < rangeVals.length; i++){
if(rangeVals[i][COL_TO_SEARCH] == DELETE_VAL){
newRangeVals.push(rangeVals[i]);
};
};
RANGE.clearContent();
var newRange =
SHEET.getRange(1,1,newRangeVals.length, newRangeVals[0].length);
newRange.setValues(newRangeVals);
};
}
使用indexOf() 。 這是一種 Javascript 方法,可讓您驗證字符串中是否包含子字符串。 在您的情況下,它允許您驗證“| My Text Here”是否包含在 A 列的單元格中。
從結束行到開始行“向后”循環。 為什么? 因為否則行的刪除會弄亂剩余行的行索引。
function deleteFunction(){
//declarations
var sheetName = "Title";
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName(sheetName);
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
for(var i=values.length-1;i>0;i--){
var myValue=values[i][0];
Logger.log(i);
if( myValue.indexOf("| My Text Here")==-1){
Logger.log(myValue);
sheet.deleteRow(i+1);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.