Автоматически копировать значения из ячеек каждую неделю в установленное время после того, как их значение было вручную изменено кем-то другим - PullRequest
1 голос
/ 30 сентября 2019

Я запускаю Google лист, чтобы отслеживать посещаемость детской программы, которую я координирую. В каждой строке есть имя, а затем несколько столбцов с флажками, чтобы указать, принесли ли они адекватные материалы для программы на этой неделе. Рядом со столбцами флажков есть столбец (PTS TODAY), который будет подсчитывать, сколько очков этот ребенок заработал за эту неделю, на основе отмеченных им флажков.

Итак, каждую среду в 18:30 наша регистрационная стойка на стойке регистрации вручную нажимает на флажки, когда дети появляются с какими-либо вещами, которые у них есть, и к 6:45 все баллы за эту неделю.

Мне бы очень хотелось узнать, как настроить лист для выполнения автоматизированного задания еженедельно (например, в среду в 9 часов вечера), которое будет:

a) автоматически копировать очкизначение столбца для пустого столбца на другом листе
b) автоматически добавляет значение столбца pts в другой столбец, который представляет ПОЛНЫЙ PTS, заработанный до сих пор, а также
c) автоматически сбрасывает значение всех флажков в ноль для сбросалист посещаемости.

Я не пробовал делать какие-либо макросы, так как это то, с чем я не знаком. До сих пор мои усилия включали использование формул с оператором IF, ссылающимся на ячейку с функцией NOW, для создания своего рода триггера в определенное время каждую неделю, но вскоре я понял, что если это даже возможная тактика, то она выходит за рамки моихограниченное мастерство Google-Sheets.

1 Ответ

0 голосов
/ 01 октября 2019

Попробуйте это:

function thumb(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET_NAME");
  var data = ss.getDataRange().getValues();
  var count;

  for (var i = 1; i < data.length; i++){
    count = 0;
    for (var j = 1; j < data[0].length; j++){
      if (j == data[0].length-1){
        data[i][j] += count;
        break;
      }
      if (data[i][j] == true){
        count++;
        data[i][j] = false;
      }
    }
  }
  ss.getDataRange().setValues(data);
}

Я написал это на листе со строкой заголовка, равной names, activities, total, у каждого из действий была кнопка с флажком, и в итоге это место, куда вошли точкиконец. Код проверяет, какие значения являются истинными, а затем добавляет к счетчику в столбце total. Чтобы настроить триггер на еженедельный запуск, вы должны следовать этим инструкциям , вы сможете указать день / время, когда вы хотите его запускать.

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