Google Scripts - использование раскрывающегося меню для отображения баланса - PullRequest
0 голосов
/ 07 мая 2020

Итак, я использовал проверку данных для создания раскрывающегося меню, которое затем обновит некоторые ячейки, чтобы показать сумму бюджета, оставшуюся от другого листа. Когда я пытаюсь обновить поле, ничего не происходит.

Первая проверка, отмечен ли флажок как истинное, все работает, поэтому я знаю, что он вводит первое if. Я просто не могу заставить его ввести второе, если.

function onEdit(e) {

  var sheet=e.range.getSheet();
  var rgA1=e.range.getA1Notation();

  if (sheet.getName()=="Entry") {
   console.log("Entry")

    if (e.value == "TRUE") {
      submit();
      Today();
      e.range.setValue("FALSE");
    }

    if (rgA1=="A8" || rgA1 == "B8") {
      var entry = e.source.getSheetByName("Entry");
      var summary = e.source.getSheetByName("Summary");
      var day = entry.getRange("B9").getValue();
      var month = entry.getRange("B10").getValue();
      var total = entry.getRange("B11").getValue();
      var today = Utilities.formatDate(new Date(), "GMT+1", "MM/dd/yy");
      //var daysRemaining = DATEIF(today, summary.getRange("D4"), "D");cell functions not allow
      //var monthsRemaining = DATEIF(today, summary.getRange("D4"), "M");cell functions not allowed

      console.log("Entered 2nd if")

      if (e.value == summary.getRange("B59").getValue) {
        var balance = summary.getRange("E59").getValue
         console.log("Entered 3rd if")
      }

      else if (e.value == summary.getRange("B60").getValue()) {
        var balance = summary.getRange("E60").getValue()
      }

      else if (e.value == summary.getRange("B61").getValue()) {
        var balance = summary.getRange("E61").getValue()
      }

      else if (e.value == summary.getRange("B62").getValue()) {
        var balance = summary.getRange("E62").getValue()
      }

      else if (e.value == summary.getRange("B63").getValue()) {
        var balance = summary.getRange("E63").getValue()
      }

      else if (e.value == summary.getRange("B64").getValue()) {
        var balance = summary.getRange("E64").getValue()
      }

      else if (e.value == summary.getRange("B65").getValue()) {
        var balance = summary.getRange("E65").getValue()
      }

      else if (e.value == summary.getRange("B66").getValue()) {
        var balance = summary.getRange("E66").getValue()
      }

      else if (e.value == summary.getRange("B67").getValue()) {
        var balance = summary.getRange("E67").getValue()
      }

      else if (e.value == summary.getRange("B68").getValue()) {
        var balance = summary.getRange("E68").getValue()
      }

      else if (e.value == summary.getRange("B69").getValue()) {
        var balance = summary.getRange("E69").getValue()
      }

      else if (e.value == summary.getRange("B70").getValue()) {
        var balance = summary.getRange("E70").getValue()
      }

      else if (e.value == summary.getRange("B71").getValue()) {
        var balance = summary.getRange("E71").getValue()
      }

      day.setValue(balance / 56);
      month.setValue(balance / 2);
      total.setValue(balance);

    }
  }
}

Любая благодарность была бы очень признательна!

EDIT 5/8/20

Исправлено с использованием предложений Купера

Также здесь - это копия листа, для которого предназначен этот скрипт.

1 Ответ

1 голос
/ 07 мая 2020

Так лучше, но у вас все еще есть проблемы в конце.

function onEdit(e) {
  var sheet=e.range.getSheet();
  var rgA1=e.range.getA1Notation();
  if (sheet.getName()=="Entry") {
   console.log("Entry")
    if (e.value == "TRUE") {
      submit();
      Today();
      e.range.setValue("FALSE");
    }

    if (rgA1=="A8" || rgA1 == "B8") {
      var entry = e.source.getSheetByName("Entry");
      var summary = e.source.getSheetByName("Summary");
      var dA=entry.getRange('B9:B11').getValues();
      var day = dA[0][0];
      var month = dA[0][1];
      var total = dA[0][2];
      var today = Utilities.formatDate(new Date(), "GMT+1", "MM/dd/yy");
      var bvs=summary.getRange('B59:B71').getValues();
      var erg=summary.getRange('E59:E71');
      var evs=erg.getValues();
      for(var i=0;i<bvs.length;i++) {
        if(e.value==bvs[i][0]) {
          var balance=evs[i][0];
          break;
        }
      }
      entry.getRange('B9').setValue(balance/56);
      entry.getRange('B10').setValue(balance/2);
      entry.getRange('B11').setValue(balance);
      //day.setValue(balance / 56);//day is not a range so there is no  setValue Method 
      //month.setValue(balance / 2);//day is not a range so there is no  setValue Method 
      //total.setValue(balance);//day is not a range so there is no  setValue Method 

    }
  }
}
...