Google Sheets: нажмите кнопку, чтобы выделить строку, выделить следующую строку и обновить ячейку, нажав кнопку даты и времени. - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь создать планировщик вращения. Моя цель - иметь таблицу имен, телефонных номеров и кнопку.

Когда нажата кнопка («Назначить»), она выделяет строку и обновляет ячейку вне таблицы с указанием даты и времени, когда она была нажата. При повторном нажатии она отменяет выделение этой строки, выделяет следующую строку и обновляет ячейку даты / времени.

Когда он достигнет дна, он должен вернуться наверх. Он должен сохранять то, где он остановился между закрытием и открытием документа, и он должен синхронизироваться c, даже если он открыт несколькими пользователями ... Я не думаю, что Excel может это сделать, но Google Sheets должен быть в состоянии, что Вот почему я склоняюсь к Google Sheets.

Я полностью понимаю, если это слишком много, чтобы ожидать, что кто-то разберется на форуме, но я был бы очень признателен даже за точку в правильном направлении, чтобы выяснить это из себя !!

1 Ответ

1 голос
/ 17 января 2020

Когда нажата кнопка («Назначить»), она выделяет строку и обновляет ячейку вне таблицы с указанием даты и времени, когда она была нажата.

Вы можете добавить или создайте изображение, которое будет действовать как кнопка, и свяжите скрипт, который будет запускаться при нажатии .

Когда он достигает дна, он должен двигаться обратно к вершине.

Один из способов сделать это - отслеживать выделенную строку и использовать модульную арифметику c, чтобы вернуться к началу таблицы.

Следует сохранить, где он остановился между закрытием и открытием документа

Один из вариантов - использовать Службу свойств для хранения выделенной строки.

Я попытался реализовать пример, используя следующие идеи (сделайте копию перед запуском): https://docs.google.com/spreadsheets/d/1bHN5cf2HaLTW3EbAxfXUusQnDL3dNFY313J8cdTGp4o/

Связанный скрипт:

var NUMBER_OF_ASSIGNEES = 5;
var LAST_ASSIGNMENT_DATETIME_CELL = 'G3';
var TABLE_OFFSET = 2;

function assignNewPerson(){
  var sheet = SpreadsheetApp.getActive().getActiveSheet();
  setAssignTime(sheet);
  assignNext(sheet); 
}

function setAssignTime(sheet) {
  var d = new Date();
  sheet.getRange(LAST_ASSIGNMENT_DATETIME_CELL).setValue(d.toLocaleTimeString());
}

function assignNext(sheet) {
  // Use the Properties Service to store the current assignee index.
  var documentProperties = PropertiesService.getDocumentProperties();
  var currentAssigneeIndex = parseInt(documentProperties.getProperty('CURRENT_ASSIGNEE_INDEX'));
  if (isNaN(currentAssigneeIndex)) {
    currentAssigneeIndex = 0;
  } 

  // Remove highlight from assignee cells.
  sheet.getRange(TABLE_OFFSET + currentAssigneeIndex, 1, 1, 2).setBackground("white");

  // Increment the assignee index. If the last row is reached, go back to the start of the table.
  currentAssigneeIndex = (currentAssigneeIndex + 1) % NUMBER_OF_ASSIGNEES; 
  documentProperties.setProperty('CURRENT_ASSIGNEE_INDEX', currentAssigneeIndex);

  // Highlight assignee cells.
  sheet.getRange(TABLE_OFFSET + currentAssigneeIndex, 1, 1, 2).setBackground("yellow");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...