1 回答

TA貢獻1815條經驗 獲得超13個贊
解釋:
基本思想是將我們想要刪除的行存儲到一個數組中,然后向后刪除該行(按降序排列)。
您當前的解決方案與此解決方案之間的區別在于,現在我們還需要迭代數據,以確定需要刪除哪些行。
解決方案:
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Ark1');
const filter_sh = ss.getSheetByName('Filter');
const sh_names = filter_sh.getRange('A1:A'+filter_sh.getLastRow()).getValues().flat();
var deleteRows = [];
sh_names.forEach(s=>{
if(!ss.getSheetByName(s)){
ss.insertSheet().setName(s);}
var copyData = [];
var new_sheet = ss.getSheetByName(s);
var tempData = sh.getRange('A1:B'+sh.getLastRow()).getValues();
tempData.reverse().forEach((r,i)=>{
if(r[0].includes(s)){
deleteRows.push(tempData.length-i);
copyData.push(r);}});
if(copyData.length>0){
new_sheet.getRange(new_sheet.getLastRow()+1,1,copyData.length,copyData[0].length).setValues(copyData);}
});
deleteRows = deleteRows.filter((x, i, a) => a.indexOf(x) === i).sort((a, b) => b - a);
deleteRows.forEach(r=>sh.deleteRow(r));
}
添加回答
舉報