我编写了一个脚本,该脚本从用户指定的行中获取所有值。然后,将这些值填写到新的工作表中,然后自动向下一行以设置下一个值。但是,有些单元格是空的,我想忽略它们。目前,我的脚本每次写入一个值时都会下一行,但是对于空值也是如此。
function tourzettelV4() {
var app = SpreadsheetApp.getActive();
var ppt2019 = app.getSheetByName("PlakatTool2019");
// Abfragen aus welcher Zeile der Tourzettel generiert werden soll
// Asking which row to use
var row=SpreadsheetApp.getUi().prompt('Gib die Zeile mit dem Datum für die Tour ein').getResponseText();
var dateTour = ppt2019.getRange(row, 1).getValue();
var newSheet = app.getSheetByName("TourzettelV2")
newSheet.getRange(1, 1).setValue(dateTour);
newSheet.getRange(1, 2).setValue("Gebiet:");
newSheet.getRange(3, 1).setValue("Was");
newSheet.getRange(3, 2).setValue("Format");
newSheet.getRange(3, 3).setValue("Menge");
newSheet.getRange(3, 4).setValue("Info");
var lastCol = ppt2019.getLastColumn();
// Loop mit if value empty repeat loop, else set value
var checkCol = 3;
var mengeZeile = 4;
for(var komulierer = 0; komulierer < lastCol - 3; komulierer++){
var plakatMenge = ppt2019.getRange(row, 3 + komulierer, checkCol + komulierer, row).getValues();
if(plakatMenge === ""){
}
//this is where I want to just repeat the loop in case a cell is empty
else {
newSheet.getRange(mengeZeile, 3).setValue(plakatMenge);
mengeZeile = mengeZeile + 1;
}
}
}
我摆弄了.isBLank(),它没有用,我尝试使用if else语句,这样,如果一个值是空的,它将重新启动循环,并且只有当它不为空时才设置该值,没用。
所以现在看起来像这样:
EMPTY
10
EMPTY
EMPTY
20
但是我需要这样:
10
20
答案 0 :(得分:0)
您的if
语句引用的是 WHOLE 数组,而不仅仅是单个对象。这就是为什么它总是返回true
并设置所有值的原因。
if (plakatMenge[komulierer][0]) {
newSheet.getRange(mengeZeile, 3).setValue(plakatMenge[komulierer][0]);
mengeZeile = mengeZeile + 1;
}
此if
语句现在检查数组该行中的第一个对象是否不为空,然后将找到的行写到工作表中。
使用此脚本意味着您可以摆脱if else
,而只需使用if
语句即可。