這個問題在這里已經有了答案: 如果行在 Google App 腳本中的特定列有空值,如何快速洗掉行 2 個答案 如何加快 Google App Script 中的行洗掉功能 (1 個回答) 加快應用程式腳本上的行洗掉 3 個答案 昨天關門了。
如果 B 列中的字串不等于 serverinputvalue 或 D 列中的值小于 ,則此函式逐行洗掉行minscorevalue。
問題是它運行得非常慢。有沒有辦法加快這個?
function readRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var serverinputvalue= SpreadsheetApp.getActive().getSheetByName('Instructions').getRange('C13').getValue();
var minscoreinputvalue = SpreadsheetApp.getActive().getSheetByName('Instructions').getRange('C17').getValue();
var rowsDeleted = 0;
for (var i = 1; i <= numRows - 1; i ) {
var row = values[i];
if (row[1] != serverinputvalue || row[3] < minscoreinputvalue) {
sheet.deleteRow((parseInt(i) 1) - rowsDeleted);
rowsDeleted ;
}
}
};
我讀過這個來源https://yagisanatode.com/2019/06/12/google-apps-script-delete-rows-based-on-a-columns-cell-value-in-google-sheet其中提到加快類似功能的方法,但說實話,我 100% 不完全理解如何實作它。
uj5u.com熱心網友回復:
嘗試這個:
function readRows() {
const ss = SpreadsheetApp.getActive();
var C13= ss.getSheetByName('Instructions').getRange('C13').getValue();
var C17 = ss.getSheetByName('Instructions').getRange('C17').getValue();
var sh = ss.getActiveSheet();
var rg = sh.getRange(2,1,sh.getLastRow() - 1, sh.getLastColumn());
var vs = rg.getValues().filter(r => {if(r[1] == C13 && r[3] >= C17) return true});
rg.clearContent();
sh.getRange(2,1,vs.length,vs[0].length).setValues(vs);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/536456.html
上一篇:根據另一個選項卡中的資料洗掉行(GoogleApps腳本)
下一篇:將多行添加發送到電子郵件地址
