【发布时间】:2020-01-10 15:00:59
【问题描述】:
我想从一张纸的特定行中读出值,然后将它们插入到另一张纸的下方。问题是,如果一个单元格是空的,我显然不想在新工作表的最后一个值下面插入一个空值。我所做的是以下循环:
var lastCol = ppt2019.getLastColumn();
var row = SpreadsheetApp.getUi().prompt(
'Enter row to read out values from'
).getResponseText();
var row2 = 4;
for (var i = 0; i <= lastCol - 3; i++) {
var plakatMenge = ppt2019.getRange(row, 3 + i).getValues();
if (plakatMenge === "") {
continue;
}
else {
newSheet.getRange(row2, 3).setValue(plakatMenge);
row2++;
}
}
它读出值并将其放入正确的列和起始行,但如果读出的值为空,它不会只是跳到该单元格中的setValues,它仍然会放入一个空值。它应该是这样的:
Values
10
10
20
30
10
但看起来像这样:
Values
10
10
20
30
10
为了比较,这里是完整的脚本(我不是程序员,所以请不要判断是否缺少表格)
function tourzettelV4() {
var app = SpreadsheetApp.getActive();
var ppt2019 = app.getSheetByName("PlakatTool2019");
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 makeNewSheet = app.getSheetByName("Tour " + dateTour);
if (makeNewSheet != null) {
app.deleteSheet(makeNewSheet);
}
makeNewSheet = app.insertSheet();
makeNewSheet.setName("TourzettelV2");
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();
var checkCol = 3;
var row2 = 4;
for (var i = 0; i <= lastCol - 3; i++) {
var plakatMenge = ppt2019.getRange(row, 3 + i).getValues();
if (plakatMenge === ""){
continue;
}
else {
newSheet.getRange(row2, 3).setValue(plakatMenge);
row2++;
}
}
}
【问题讨论】:
-
plakatMenge很可能是“”以外的值。也许尝试控制台记录该值,看看它是否可能是null或undefined。 -
你几乎拥有它。您正在检查空字符串,将其扩展为:
|| ... === null? -
将
if(plakatMenge === ""){行更改为if(!plakatMenge){ -
问题是 === 必须是 ==。谢谢大家
标签: javascript google-apps-script google-sheets setvalue