Добавить кнопку для обновления таблицы Google. Увеличить ячейку и обновить другую ячейку с текущей датой

У нас есть электронная таблица со списком членов нашего тренажерного зала. Что мы хотели бы включить, так это способ, которым тренер мог бы ходить с iPad и нажимать кнопку, которая «регистрировала бы» наших участников. Обычно количество присутствующих членов невелико - может быть, 20-30 человек на класс. Но нам нужен способ привлечь тренера к ответственности, чтобы, если кто-то не появляется в течение 3 недель, мы могли связаться по электронной почте и узнать, где он был.

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

Что я хотел бы, так это кнопку в крайнем левом столбце «регистрация» рядом с именем каждого участника, которую наши тренеры могли бы щелкнуть, когда они присутствуют. Это добавит +1 к столбцу «общее количество чекинов», а также обновит столбец «последний раз чекин» с текущей отметкой даты/времени.

https://docs.google.com/spreadsheet/ccc?key=0AnGxNda7E77DdHZldlhQY2hZZlNJamZ6VTZ0WUhqZXc&usp=sharing

Я новичок в написании сценариев в Google Docs, поэтому заранее спасибо за любой предложенный опыт! Очень признателен!


person KJoy    schedule 01.12.2013    source источник
comment
Лучшим подходом, вероятно, было бы создание небольшого пользовательского интерфейса с простым listBox, содержащим ваших членов и кнопку. Он также будет читать и писать в вашу электронную таблицу. Это, безусловно, было бы удобнее использовать на планшете или телефоне, чем в электронной таблице Google.   -  person Serge insas    schedule 01.12.2013


Ответы (1)


Ну вот

Электронная таблица https://docs.google.com/spreadsheet/ccc?key=0AvmOEVr803HMdDE5MmZXMlQ1cnpzQ21wYkNNZ19ENXc#gid=0

Пользовательский интерфейс сценария (откройте этот URL-адрес с любого устройства, как сказал Серж). .com/macros/s/AKfycbxfqII2qhtctJTO1nVyLOBZJ4KxElVh8I3fTCFUR1o5R1uOUcA/exec

Код:

function doGet() {
  var ss = SpreadsheetApp.openById('0AvmOEVr803HMdDE5MmZXMlQ1cnpzQ21wYkNNZ19ENXc');
  var sheet = ss.getSheetByName('members');
  var members = sheet.getRange(2, 1, sheet.getLastRow()-1, 1).getValues();
  Logger.log(members)


  var app = UiApp.createApplication().setTitle('Gym Check In');
  var grid = app.createFlexTable().setId('grid');
  app.add(grid);

  var row = 0;
  var column = 0;

  for (var m in members) {    

    grid.setWidget(row, 0, app.createLabel(members[m]));
    grid.setWidget(row, 1, app.createButton('Check In').setId(row+2).addClickHandler(app.createServerHandler('checkIn').addCallbackElement(grid)).addClickHandler(app.createClientHandler().forEventSource().setEnabled(false)));
    row++;
  }
  return app;
}

function checkIn(e) {
  var ss = SpreadsheetApp.openById('0AvmOEVr803HMdDE5MmZXMlQ1cnpzQ21wYkNNZ19ENXc');
  var sheet = ss.getSheetByName('members');

  var button = e.parameter.source;

  sheet.getRange(button, 2).setValue(new Date());  
}
person LennyZ71    schedule 03.12.2013
comment
Хорошая работа :) Я скорее представил выпадающий список и одну кнопку, но это проще в использовании, если вам не нужно показывать много участников... (может быть, поместить всю панель в панель прокрутки?) - person Serge insas; 03.12.2013