0
我需要遍歷表中的所有行/列,並刪除包含特定單詞的行。理想情況下,我會使用正則表達式搜索表單,但只要找到一個字符串就可以幫助我移動。我在堆棧溢出中看到很多關於查找和刪除空行的帖子,但是找不到關於搜索整個工作表和刪除行的任何信息(如果找到的話)。Google Spreadsheets腳本刪除任何找到字符串的行
這是我到目前爲止有:
/* Delete rows */
function deleteRows() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var deleted = 0; // Counter (don't need if we loop backwards)
var regExp = new RegExp('word');
for (var row = 0; row < values.length; row++) {
var regExpMatch = values[row][1].match(regExp);
if (regExpMatch.length > 0) {
sheet.deleteRow(row + 1 - deleted);
deleted++;
}
}
SpreadsheetApp.flush();
};
然而,這只是搜索列B,並拋出一個錯誤「類型錯誤:無法讀取零屬性‘長度’」即使存在「詞」我的電子表格中的B列。如果我喜歡一個簡單的版本:
/* Delete rows */
function deleteRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var deleted = 0; // Counter (don't need if we loop backwards)
for (var row = 0; row < values.length; row++) {
if (values[row][1].search("WordThatExistsInOneRow")) {
sheet.deleteRow(row);
deleted++;
}
}
SpreadsheetApp.flush();
};
它開始刪除每一行,即使「WordThatExistsInOneRow」僅在1行顯示了。
我認爲這確實工作!然而,對於IF聲明,我無法得到一個正則表達式在那裏工作。我最終這樣做了;你認爲這是在那裏測試RegEx的最佳解決方案嗎? (在這個例子中,我會找到以大寫'A'結尾的所有單元格): var re = new RegExp('A $','gi'); (var column = 0; column
Keith
2015-02-18 01:58:02
^^對不起,我試圖讓代碼看起來更好,但無法弄清楚如何在註釋中創建新的行/縮進 – Keith 2015-02-18 02:03:41
你不能在評論中傷心地,是的,這將是一個一個'regexp.test()'的好地方 – 2015-02-18 09:15:14