尝试使用 .isBlank() 检查多个单元格
Trying to check multiple cells with .isBlank()
我目前正在开发一个 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'));
}
这就是我目前正在使用的,但您可能很快就会看出这会变得很乱。有更好的方法吗?
使用数组而不是单个值更有效。这样你只需要获取和设置一次数据。
在以下脚本中调整 sheet 名称和所需范围。范围 C2:D10
假定列 D 是 if 语句的一部分,并且 C 是您想要在 D 为空时获取值的列。
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);
}
尝试使用 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 得到了改进,因为你所要做的就是在数组上添加几个范围,它们不需要是连续的。当然,如果不同的范围和不同的方法那么你将不得不修改脚本。
我目前正在开发一个 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'));
}
这就是我目前正在使用的,但您可能很快就会看出这会变得很乱。有更好的方法吗?
使用数组而不是单个值更有效。这样你只需要获取和设置一次数据。
在以下脚本中调整 sheet 名称和所需范围。范围 C2:D10
假定列 D 是 if 语句的一部分,并且 C 是您想要在 D 为空时获取值的列。
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);
}
尝试使用 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 得到了改进,因为你所要做的就是在数组上添加几个范围,它们不需要是连续的。当然,如果不同的范围和不同的方法那么你将不得不修改脚本。