Скрипт Google Sheets при помощи цикла - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь написать скрипт в 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();
  }
}

1 Ответ

0 голосов
/ 26 июня 2018

Если amount не больше outstanding, amount не изменяется. Если amount больше outstanding, amount уменьшается на outstanding. Поскольку outstanding всегда меньше amount в этой точке, amount никогда не достигнет нуля в результате этого, и цикл будет выполняться бесконечно, потому что вы никогда не измените amount где-либо еще. Вам либо нужно изменить свое условие, либо более вероятное решение - добавить некоторую модификацию amount в ваше предложение else, чтобы amount мог достичь нуля, чтобы завершить цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...