Я немного новичок в написании сценариев для электронных таблиц, и у меня есть проект, который я пытаюсь выполнить sh.
Обзор:
Я делаю электронную таблицу что записи прогресса чтения. Первый столбец (A) - это дата. Вторая колонка (B) - это время, необходимое для чтения. Третий столбец (C) - количество минут, потраченных на чтение. Четвертый столбец (D) - это бонусные минуты, которые описаны ниже. Пятый столбец (E) - это результат (Усилие + Бонус-требование)
Если вы потратите более 30 минут (скажем, 30 + x минут), дополнительно используется, чтобы добавить 1 минуту для следующих x дней , Так что если вы потратили 37 минут на чтение следующих 7 дней, вы получите бонус в 1 минуту, поэтому вам нужно потратить 29 минут вместо обычных 30 на следующие 7 дней.
Однако бонус может накапливаться и складываться , если вы тратите 37 минут в первый день, на следующий день вы должны сделать 29 минут, но если вместо этого вы в общей сложности 35 минут, то следующие 5 дней (после 2-го дня) получат еще 1 бонусную минуту, так что 3-й день будет иметь в общей сложности 2 минуты бонуса. Таким образом, общая картина в этом примере будет выглядеть так: 2-й день получит +1, 3-й - 7-й получит 2 минуты, а 8-й день получит 1 минуту (с первого дня, а не 2-го).
Другие критерии для адреса:
Максимальный бонус для расчета не ограничен, поэтому, если пользователю потребовалось потратить 30 минут на чтение, а они потратили 150 минут, бонус в 120 минут будет добавлен как 1 минута. каждый день в течение следующих 120 дней.
Бонус можно наращивать без ограничений, если сумма превышает требуемые суточные лимиты, с которыми он будет обращаться нормально, вы можете достичь и превысить необходимые 30 минут только с помощью бонуса и будет рассматриваться нормально. Если у вас есть накопленный бонус в 35 минут за один день, он будет рассматриваться как «цель достигнута + бонус 5 минут» еще до наступления такого дня. пока нет ничего, что могло бы помешать достижению в этот день увеличения бонуса.
Мои усилия
Я выполнил некоторые сценарии с использованием листов Google javascript, но проблема заключается в том, что мне нужно было создать функцию, которую мне нужно использовать в каждой ячейке, поскольку из того, что я понял, скрипты не могут использовать setValue () для ячеек, отличных от вызываемых.
Также способ работы функций работа заключается в том, что они вызываются только в тот момент, когда вы устанавливаете ячейку в «= myFunction ()», и не меняются после установки, даже если вы меняете ячейки, используемые в качестве входных данных.
Некоторый код
Это функция, которую я создал, она отлично работает, однако мне нужно, чтобы она была постоянной и выполняла вычисления в реальном времени.
function c() {
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var thisCell = activeSheet.getCurrentCell();
var thisColumn = thisCell.getColumn();
var thisRow = thisCell.getRow();
var finalValue = 0;
for (var i = 2; i< thisRow; i++) {
//if the value in cell Ei is greater than the difference between (thisRow-i) then increment cell
if (activeSheet.getRange("E"+i).getValue() >= (thisRow-i)){
Logger.log(activeSheet.getRange("E"+i).getValue());
finalValue++;
}
}
return (finalValue);
Logger.log("final "+finalValue);
}
Надеюсь, моя проблема достаточно ясна для вы.