Попытка выполнить расчеты Dynami c Equity Split в Google Sheets - PullRequest
0 голосов
/ 18 февраля 2020

новый для использования javascript в Google Sheets. Я пытаюсь создать лист, который автоматически рассчитывает, что деловые партнеры получат, основываясь на их динамическом процентном соотношении c и поступивших деньгах. Процент поступает из одной ячейки, но каждый платеж, произведенный партнерам, будет указан в столбце. Вот что у меня получилось:

/**
* Creates a Date Stamp if a column is edited.
* Also performs dynamic split calculations
*/

//CORE VARIABLES
// The column you want to check if something is entered.
var COLUMNTOCHECK = 13;
// Where you want the date time stamp offset from the input location. [row, column]
var DATETIMELOCATION = [0,-1];
// Where the calculations will be performed for the Partners.
var PARTNERONELOCATION = [0, 1];
var PARTNERTWOLOCATION = [0, 2];
var PARTNERTHREELOCATION = [0, 3];
// Sheet you are working on
var SHEETNAME1 = 'Sheet1'

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var partnerOnePercent = sheet.getRange("G2").getValue();
  var partnerOnePaySource = sheet.getRange("M2").getValue();
  var partnerTwoPercent = sheet.getRange("G3").getValue();
  var partnerTwoPaySource = sheet.getRange("M2").getValue();
  var partnerThreePercent = sheet.getRange("G4").getValue();
  var partnerThreePaySource = sheet.getRange("M2").getValue();
  //checks that we're on the correct sheet.
  if(sheet.getSheetName() == SHEETNAME1 ) {
    var selectedCell = ss.getActiveCell();
    //checks the column to ensure it is on the one we want to cause the date and calculations to appear.
    if( selectedCell.getColumn() == COLUMNTOCHECK) { 
      var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
      dateTimeCell.setValue(new Date());
      var partnerOneCell = selectedCell.offset(PARTNERONELOCATION[0],PARTNERONELOCATION[1]);
      partnerOneCell.setValue((partnerOnePercent/100)*partnerOnePaySource);
      var partnerTwoCell = selectedCell.offset(PARTNERTWOLOCATION[0],PARTNERTWOLOCATION[1]);
      partnerTwoCell.setValue((partnerTwoPercent/100)*partnerTwoPaySource);
      var partnerThreeCell = selectedCell.offset(PARTNERTHREELOCATION[0],PARTNERTHREELOCATION[1]);
      partnerThreeCell.setValue((partnerThreePercent/100)*partnerThreePaySource);
      }
  }
}

Я хотел бы, чтобы при вводе платежа в столбец (столбец 13) платеж делился на ячейки местоположения партнера. (var partnerOneCell, var partnerTwoCell, var partnerThreeCell), которые смещены относительно ячейки, в которую введена сумма платежа, и я хочу, чтобы она рассчитывалась только по процентам в том виде, как они есть на момент ввода суммы платежа. Мы будем благодарны за любую помощь.

Сейчас она рассчитывается только на основе ячейки M2 (строка 2, столбец 13). Я хочу, чтобы он мог рассчитывать, основываясь на сумме, которую я ввел в любую ячейку в этом столбце, и только на ячейке, которую я сейчас обновляю. Я думаю, что это как-то связано с getActiveRange или чем-то, но я недостаточно знаком с этими методами.

Редактировать: После тестирования также кажется, что столбец 14 строки 3 отражает расчет partnerOnePaySource * partnerOnePercent с PaySource из строки 3, столбец 13 (M3), хотя я не уверен, почему.

1 Ответ

0 голосов
/ 18 февраля 2020

Хорошо, все, прочитав мой код, поняли, как я могу использовать метод getActiveCell в переменных PaySource.

var partnerOnePercent = sheet.getRange("G2").getValue();
  var partnerOnePaySource = ss.getActiveCell().getValue();
  var partnerTwoPercent = sheet.getRange("G3").getValue();
  var partnerTwoPaySource = ss.getActiveCell().getValue();
  var partnerThreePercent = sheet.getRange("G4").getValue();
  var partnerThreePaySource = ss.getActiveCell().getValue();

Благодаря этому я смог исправить свою проблему, и теперь она работает.

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