google-apps-script - 使用 Google Apps 脚本删除或替换 Google 表格单元格中的“未定义”字符串
问题描述
我Google Apps Script
从一个HTML
form
. 如果a 中的checkbox
或radio
按钮fieldset
未被选中,则undefined
字符串将显示在单元格中,如下所示:
如何"undefined"
使用 Google Apps 脚本删除或替换单元格中的字符串?
这是我的Google Apps Script
代码的相关部分,它接收然后将form
数据写入 a 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])
解决方案
我创建了以下内容,试图围绕您的代码片段重新创建上下文,以促进最小的、可重现的示例。
我在其中编辑了内联函数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 **/
}
}
推荐阅读
- python - 没有post方法的Python登录网站
- regex - 错误:未指定重复运算符的目标
- android - 从 RecyclerView 适配器转换为 FirestoreRecyclerAdapter
- c++ - 我们可以专门化类模板的枚举(类型)成员吗?
- amazon-web-services - 如何使用 Ansible 从 AWS VPC 中的子网获取下一个可用的私有 IP?
- arrays - For-loop 没有以正确的顺序返回数组中的项目
- android - 我正在尝试从 Firestore 获取多个值查询我做对了吗?
- sql - 如何选择所有员工并将其按部门显示在行中?
- material-ui - 来自 '@material-ui /styles' 的 {withStyles} 断点
- c# - 在 Linq 之间添加 if 语句