javascript - 我的 IF-ELSE 语句总是返回 Google Appscript 中的第一个值。到处都试了调试
问题描述
我正在尝试通过查看我的学生成绩来自动创建 Google 文档。我有一个 if 语句来检查分数,分配一个值和一个打印相同的函数。一切似乎都有效,除了我的 if 语句总是返回第一个值。我该如何解决?
这是我的代码:
function createPdf() {
const ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Summary');
const lastRow = ws.getLastRow();
const score = ws.getRange(lastRow, 3).getValue();
const templateDoc = DriveApp.getFileById('test1');
const newTempFile = templateDoc.makeCopy(tempFolder);
const openDoc = DocumentApp.openById(newTempFile.getId());
const body = openDoc.getBody();
const paragraph = body.getParagraphs();
body.replaceText('{percentage}', percentage);
body.replaceText('{score}', score);
if (50.0 < score < 120.0) {
paragraph[13].appendText('POOR') && paragraph[17].appendText('xyz.');
} else if (score >= 120.0) {
paragraph[13].appendText('GOOD') && paragraph[17].appendText('abc.');
} else {
paragraph[13].appendText('VERY POOR') && paragraph[17].appendText('ouy.');
}
openDoc.saveAndClose();
}
解决方案
你的方法总是true
,因为第一部分
50.0 < score
要么true
要么false
。与布尔值进行下一次比较
boolean < 120.0
布尔值转换为数字0
or1
并且该值始终小于120
.
为了克服这个问题,您需要与逻辑 AND&&
进行两次比较。
50.0 < score && score < 120.0
推荐阅读
- javascript - 直接查看到 Print Preview Firefox
- node.js - 从模块向 ExpressJS 应用程序添加路由
- android - Flutter Doctor --android-licenses:线程“主”java.lang.NoClassDefFoundError 中的异常
- c# - 更新数组项(使用 C# Mongo 驱动程序)。可能吗?
- kubernetes - 如何将 Active Directory/AWS IAM 集成到 EKS Kubernetes 仪表板访问
- amazon-web-services - AWS EMR 因验证错误而终止 - 安全组错误
- excel - vba 复制和粘贴但跳过几行
- amazon-web-services - “发生错误:GraphQlDsUsersRole - 策略中的语法错误。” 使用 serverless-appsync-plugin 时
- r - 如何使用 `regex` 仅针对没有它的特定字符串将 % 符号添加到字符串
- python - Python中的函数和C++中的函数有什么区别?