我有這張表:https ://puu.sh/ISskB/7329c743ce.png
基本上我想要的只是將所有包含列 F2:F1000>20% 的行復制并粘貼到另一張表中。我計劃將此腳本安排為每天運行一次,因此它不應覆寫前幾天粘貼的任何資料。
謝謝
uj5u.com熱心網友回復:
它可以是這樣的:
function set_trigger() {
ScriptApp.newTrigger("main").timeBased().everyDays(1).create();
}
function main() {
copy_all_rows_to_dest_sheet();
remove_redundant_rows();
}
function copy_all_rows_to_dest_sheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var src_sheet = ss.getSheetByName('Sheet1');
var src_range = src_sheet.getDataRange();
var dest_sheet = ss.getSheetByName('Sheet2');
var dest_range = dest_sheet.getRange(dest_sheet.getLastRow() 1,1);
src_range.copyTo(dest_range);
}
function remove_redundant_rows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet2');
var data = sheet.getDataRange().getValues();
// get indexes of redundant rows
var rows = data.map(x => x.slice(0,-1).join());
var indexes = [];
var i = 0;
while (rows.length) {
var row = rows.shift();
// var percent = data[i].pop();
var percent = data[i][5]; // <---------------------- update
if (percent < .2 || rows.includes(row)) indexes.push(i);
i ;
}
// remove the rows by the indexes
while (indexes.length) sheet.deleteRow(indexes.pop() 1);
}
如果您運行該函式set_trigger(),它將main()每天運行該函式。
該函式main()復制作業表“Sheet2”末尾的作業表“Sheet1”中的所有行,并洗掉所有重復的行以及最后一列中值小于 20% 的所有行。
更新
這是不保留格式的 main 函式的變體(它從目標作業表中獲取所有格式):
function main_no_formatting() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var src_sheet = ss.getSheetByName('Sheet1');
var src_range = src_sheet.getDataRange();
var [header, ...src_data] = src_range.getValues();
var dest_sheet = ss.getSheetByName('Sheet2');
var dest_range = dest_sheet.getDataRange();
var [_, ...dest_data] = dest_range.getValues();
var data = [...src_data, ...dest_data];
var rows = data.map(x => x.join());
var filtered_data = [];
for (var i=0; i<data.length; i ) {
var row = rows.shift();
var percent = data[i][5];
if (percent < .2) continue;
if (rows.includes(row)) continue;
filtered_data.push(data[i])
}
var table = [header, ...filtered_data];
dest_sheet.clear();
dest_sheet.getRange(1,1,table.length,table[0].length).setValues(table);
}
小心%標志。如果它們從目標表中消失,則代碼將不起作用。
My sheet is here.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/456288.html
上一篇:谷歌應用腳??本添加到變數
