Я пытаюсь создать диаграмму выгорания на листах Google.У меня есть функция для суммирования данных (оценки) в те же даты.Проблема в том, что у меня есть несколько историй с одинаковым идентификатором, которые делаются в один день.Моя функция добавляет все числовые значения на эту дату.Мои данные;
StoryID Название Дата Оценить WorkDone
K726 Настройка разработки 19 марта 2015 г. 5 1
K726 Настройка разработки 19 марта 2015 г. 5 2
K726 Настройка разработки 20 марта 2015 г. 5 3
K727 Извлечение данных 19 марта 2015 г. 2 1
K727 Извлечение данных 23 марта 2015 г. 2 1
Когда я использую функцию для 19 марта, в результате я получаю 12.На самом деле это должно быть 7, так как K726 это та же история.Конечно, фактическая (проделанная работа) должна быть 4 на 19 марта. Я думаю, что мне нужна другая функция для оценки, но я не мог понять.Функция, которую я использую sumValid, приведена ниже.
/**
* Sum data that's valid for a given date or array of dates.
* @param idates A date, or array of dates. For each date
* the valid cells of arraz are extracted and
* summed together.
* @param arraz The dimension table. It requires a header row
* and it must have a column labelled "Valid from"
* @param idCol The name of column in arraz that is the ID of the
* changing state.
* @param validFromCol Name of the column in arraz that says when the
* data is valid from.
* @param dataCol The column name of the data to sum.
* @returns An array of values,
* one for each of the dates in idate.
* Each value is the sum of all cells in the dataCol that
* are valid for that date.
*/
function sumValid(idates, arraz, idCol, validFromCol, dataCol) {
var validToArray = validTo(idCol, validFromCol, arraz);
var arraz2 = extractColumnsAndTransform([validFromCol , dataCol], arraz);
return sumValidUsingArrays_(idates, arraz2[0], validToArray, arraz2[1]);
}
/**
* Sum data in a Javascript array for many dates.
* @param idates An array of dates. For each date
* the valid columns of arraz are extracted and
* the cells are summed together.
* @param validFroms A Javascript array of "Valid from" dates.
* @param validTos A Javascript array of corresponding "Valid to" dates.
* @param arraz A Javascript array of numbers, each element of which
* is valid from and to the corresponding dates.
* @returns An array containing the sum of all the numbers in arraz
* valid for each of the idates.
*/
function sumValidUsingArrays_(idates, validFroms, validTos, arraz) {
if (!isBasicType(idates) && !isColumn(idates)) {
throw "First parameter (dates) must be a single value or vertical column";
}
idates = make2DArray(idates);
var results = [];
idates.forEach(function(idate) {
var result = sumValidOneDate_(new Date(idate), validFroms, validTos, arraz);
results.push(result);
});
return results;
}
/**
* Sum data in a Javascript array for just a single date.
* @param idate The date for which the valid numbers are extracted and summed.
* @param validFroms A Javascript array of "Valid from" dates.
* @param validTos A Javascript array of corresponding "Valid to" dates.
* @param arraz A Javascript array of numbers, each element of which
* is valid from and to the corresponding dates.
* @returns The sum of all the numbers in arraz valid for idate.
*/
function sumValidOneDate_(idate, validFroms, validTos, arraz) {
var sum = 0;
for (var i = 0; i < validFroms.length; i++) {
var validFrom = validFroms[i];
var validTo = validTos[i];
if (validFrom != "" && isBetween(idate, validFrom, validTo)) {
var data = arraz[i];
if (isNumber(data)) {
sum += data;
}
}
}
return sum;
}