我的Google Apps Script
从HTML
form
接收数据。如果未选择checkbox
中的radio
或fieldset
按钮,则会在单元格中显示undefined
字符串,如下所示:
如何使用Google Apps脚本删除或替换单元格中的"undefined"
字符串?
这是我的Google Apps Script
代码的相关部分,该部分接收form
数据,然后将其写入Sheet
:
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var nextRow = sheet.getLastRow() + 1
var newRow = headers.map(function(header) {
if (typeof e.parameters[header] !== "undefined") {
return header === "Date" ? new Date() : e.parameters[header].join(", ")
} else {
return header === "Date" ? new Date() : e.parameters[header]
}
})
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
答案 0 :(得分:1)
我创建了以下内容,试图在您的代码段周围重新创建上下文,以简化minimal, reproducible example。
我在headers.map()
中编辑了内联函数,以实现我认为您要实现的目标。
逻辑如下:
Date()
对象。在您的原始代码段中,如果该值不是数组,它将尝试调用join()
并失败。
var VALUES = [
{
'Foobar': ['Foo', 'Bar', 'Baz'],
'Xyzzy': ['Quux'],
'Name': ['Jane Doe'],
},
{
'Foobar': ['Foo', 'Bar', 'Baz'],
'Xyzzy': undefined,
'Name': ['Peter Pan'],
},
];
function populateCells() {
var sheet = SpreadsheetApp.getActiveSheet();
for (var i = 0; i < VALUES.length; i++) {
var e = {parameters: VALUES[i]};
/** EDITED VERSION OF YOUR CODE SNIPPET STARTS HERE **/
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow() + 1;
var newRow = headers.map(function(header) {
if (typeof e.parameters[header] === 'undefined') {
return header === 'Date' ? new Date : '';
}
if (Array.isArray(e.parameters[header])) {
return e.parameters[header].join(', ')
} else {
return e.parameters[header]
}
})
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);
/** EDITED VERSION OF YOUR CODE SNIPPET ENDS HERE **/
}
}