новый для использования 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), хотя я не уверен, почему.