谷歌表格脚本,而循环帮助



我正在尝试用Google Sheets 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();
}
}

如果amount不大于outstanding,则不修改amount。如果amount大于outstanding,则amount递减outstanding。由于此时outstanding总是小于amount,因此amount永远不会达到零,并且循环将无限运行,因为您永远不会在其他任何地方修改amount。您要么需要修改条件,要么更可能的解决方案是在 else 子句中添加一些amount修改,以便amount可以达到零以结束循环。

相关内容

  • 没有找到相关文章