我目前正在研究一個 Google Apps 腳本,它基本上會在一天結束時重置我的電子表格。
if(ss.getRange('D2').isBlank()){
ss.getRange('C2').moveTo(ss.getRange('D2'));
}
if(ss.getRange('D3').isBlank()){
ss.getRange('C3').moveTo(ss.getRange('D3'));
}
if(ss.getRange('D4').isBlank()){
ss.getRange('C4').moveTo(ss.getRange('D4'));
}
if(ss.getRange('D5').isBlank()){
ss.getRange('C5').moveTo(ss.getRange('D5'));
}
這就是我目前正在使用的,但你可能會說這很快就會變得一團糟。有一個更好的方法嗎?
uj5u.com熱心網友回復:
使用陣列而不是單個值更有效。這樣,您只需獲取和設定一次資料。
在以下腳本中調整作業表名稱和所需范圍。RangeC2:D10假定列 D 是 if 陳述句的一部分,如果 D 為空,則 C 是您要獲取值的列。
function myFunction() {
const sheetName = 'Sheet1'; // define the name of the sheet
const range = 'C2:D10'; // define the range
const sss = SpreadsheetApp.getActive();
const ss = sss.getSheetByName(sheetName);
const data = ss.getRange(range).getValues();
data.forEach((r,i)=>{
data[i][1] = r[1] ==''? r[0] : r[1];
})
ss.getRange(range).setValues(data);
}
uj5u.com熱心網友回復:
用 forEach 試試
function lfunko() {
const ss = SpreadsheetApp.getActive();
['D2', 'D3', 'D4', 'D5'].forEach(r => {
let rg = ss.getRange(r);
if (rg.isBlank()) {
ss.getRange(r).offset(0, -1).moveTo(rg)
}
});
}
雖然確實有更有效的方法來做到這一點。我覺得 ui 得到了改進,因為您所要做的就是在陣列上添加更多范圍,并且它們不必是連續的。當然,如果差異范圍和差異方法,那么您將不得不修改腳本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/481063.html
上一篇:插入IF條件
