Попытка скриптового листа Google - PullRequest
1 голос
/ 04 марта 2020

Я немного новичок в написании сценариев для электронных таблиц, и у меня есть проект, который я пытаюсь выполнить 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);
}

Надеюсь, моя проблема достаточно ясна для вы.

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