Javascript 为什么布尔值被记录为未定义的复选框?
我试图记录check变量的值,它是第11列。这是一个复选框,如果勾选或未勾选,则应显示为true或false。然而,我得到一个日志,说这个值是未定义的,我不太确定为什么会这样 有人能帮忙吗?我已发表评论供你参考Javascript 为什么布尔值被记录为未定义的复选框?,javascript,google-apps-script,Javascript,Google Apps Script,我试图记录check变量的值,它是第11列。这是一个复选框,如果勾选或未勾选,则应显示为true或false。然而,我得到一个日志,说这个值是未定义的,我不太确定为什么会这样 有人能帮忙吗?我已发表评论供你参考 function sendEmail() { //setup function var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var StartRow = 2; var Row
function sendEmail() {
//setup function
var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var StartRow = 2;
var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11);
var AllValues = WholeRange.getValues();
var message = "";
for (i in AllValues) {
var CurrentRow = AllValues[i];
var EmailSent = CurrentRow[13];
//problem here
var check = CurrentRow[11];
Logger.log(check)
if (EmailSent == "sent")
continue;
//set HTML template for information
message +=
"<p><b>Timestamp by: </b>" + CurrentRow[1] + "</p>" +
"<p><b>Requester Email: </b>" + CurrentRow[2] + "</p>" +
"<p><b>Star Rating: </b>" + CurrentRow[3] + "</p>" +
"<p><b>Request Category: </b>" + CurrentRow[4] + "</p>" +
"<p><b>Description: </b>" + CurrentRow[5] + "</p>" +
"<p><b>Label: </b>" + CurrentRow[6] + "</p>" +
"<p><b>Ticket ID: </b>" + CurrentRow[7] + "</p>" +
"<p><b>Comment: </b>" + CurrentRow[8] + "</p>" +
"<p><b>Status: </b>" + CurrentRow[9] + "</p><br><br>";
var setRow = parseInt(i) + StartRow;
ActiveSheet.getRange(setRow, 13).setValue("sent");
}
var SendTo = "email@email.org.au" + "," + "email@email.org.au";
var Subject = "CT IT feedback";
MailApp.sendEmail({
to: SendTo,
cc: "",
subject: Subject,
htmlBody: message,
});
}
函数sendmail(){
//设置功能
var ActiveSheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var StartRow=2;
var RowRange=ActiveSheet.getLastRow()-StartRow+1;
var WholeRange=ActiveSheet.getRange(StartRow,1,RowRange,11);
var AllValues=WholeRange.getValues();
var message=“”;
对于(所有值中的i){
var CurrentRow=所有值[i];
var EmailSent=CurrentRow[13];
//这里有问题
var检查=当前行[11];
Logger.log(检查)
如果(EmailSent==“已发送”)
继续;
//为信息设置HTML模板
信息+=
时间戳由:“+CurrentRow[1]+””+
请求者电子邮件:“+CurrentRow[2]+””+
星级:“+CurrentRow[3]+””+
请求类别:“+CurrentRow[4]+””+
“说明:”+CurrentRow[5]+“”+
标签:“+CurrentRow[6]+””+
“票证ID:+CurrentRow[7]+””+
“注释:“+CurrentRow[8]+””+
状态:“+CurrentRow[9]+””; var setRow=parseInt(i)+StartRow; ActiveSheet.getRange(setRow,13).setValue(“已发送”); } 变量SendTo=”email@email.org.au" + "," + "email@email.org.au"; var Subject=“CT IT反馈”; MailApp.sendmail({ 收件人:SendTo, 抄送:“, 主题:主题,, htmlBody:message, }); }
如上所述,如果要从工作表中获取值,则需要考虑使用嵌套for循环进行循环。 我不熟悉您在代码片段中使用的那些函数,但为了学习,我在下面的一张表格中提供了一个如何单步执行的示例 见下面的例子
var表=[
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
];
//将上面的数组视为工作表。
//您将走1、2、3、4步,然后走下一排
//到5、6、7、8等等。
var rows=sheet.length;
var行数;
对于(变量i=0;i
首先,用于迭代对象的属性,而不是数组。我建议改用。因此,尝试改变这一点:
for (i in AllValues) {
var CurrentRow = AllValues[i];
// Rest of code in loop
}
为此:
AllValues.forEach(function(CurrentRow) {
// Rest of code in loop
})
除此之外,CurrentRow
只在索引10之前运行,因此它无法访问CurrentRow[11]
和CurrentRow[13]
。因此,当您定义WholeRange
时,您应该至少选择14列:
var WholeRange = ActiveSheet.getRange(StartRow, 1, RowRange, 14);
希望这对你有用 您是否获得了所有其他值而不是复选框?您是否同时考虑列和行以确保目标值正确?是的,所有其他值都是未定义的,我已确保列和行都是未定义的,因为我已检查了指向此列的每一列,您需要查看使用嵌套for循环。从a1开始,一步一步走到a。完成后,请走下一排。将创建一个基本的二维阵列示例,供您在下面演示。