我正试图在Google表格JavaScript中编写一个包含发票数据库的脚本。我正在尝试创建一种付款方式,使某人可以选择一个供应商并进行批量付款,然后为每张发票分配正确的金额。
我使用了while循环,即使付款工作正常,循环也没有结束,我也不知道为什么。
function makePayment() {
var dbsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('InvoiceDB');
var dasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dashboard');
var casheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Calc');
var amount = dasheet.getRange('I9').getValue();
while (amount > 0) {
var range = dbsheet.getRange("B1:B");
var values = range.getValues();
var invoiceNo = casheet.getRange('C1').getValue();
var i = [];
for (var y = 0; y < values.length; y++) {
if (values[y] == invoiceNo) {
i.push(y);
}
}
var Row = Number(i) + Number(range.getRow());
var outstanding = dbsheet.getRange(Row, 9).getValue();
var alreadyPaid = dbsheet.getRange(Row, 8).getValue();
if (amount > outstanding) {
dbsheet.getRange(Row, 8).setValue(alreadyPaid + outstanding);
amount = amount - outstanding;
} else {
dbsheet.getRange(Row, 8).setValue(amount);
}
dasheet.getRange('C9').clearContent();
dasheet.getRange('I9').clearContent();
}
}
答案 0 :(得分:0)
如果amount
不大于outstanding
,则不会修改amount
。如果amount
大于outstanding
,则amount
递减outstanding
。由于此时outstanding
始终小于amount
,因此amount
永远不会达到零,并且循环将无限运行,因为您从未在其他任何地方修改amount
。您可能需要修改条件,或者更可能的解决方案是在else子句中对amount
进行一些修改,以使amount
可以达到零以结束循环。