我正试图通过查看我的学生成绩来自动创建谷歌文档。我有一个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
是CCD_ 2或CCD_。用于下一次与布尔值的比较
boolean < 120.0
bolean值被转换为数字CCD_ 4或CCD_。
为了克服这个问题,您需要使用逻辑AND&&
进行两次比较。
50.0 < score && score < 120.0
如果我们使用3 > 2 > 1
作为示例。
从左到右的CCD_ 9是CCD_。true = 1
&false = 0
2 > 1
变为1 > 1
,而CCD_14通常是false
。
因此,如果50 < score
为真,则50 < score = 1
。因此,该评估等同于CCD_ 18,其总是CCD_ 19。