Казалось бы, вот оно общее информационное пространство, в котором можно распределять права доступа, систематизировать файлы и добавлять к ним дополнительные поля. Чего не хватает для электронного документооборота? Уже на нескольких крупных строительных объектах мы испробовали Google Drive в деле документооборота, нашли популярные грабли и удачные решения. В майские праздники я (наконец-то!) упаковал этот опыт в 7-минутный ролик, отобрав самые полезные приемы.

image

Хотя примеры из строительной тематики, так как это моя область работы (управленческий учет, фин. планирование, визуализации и т.п.), они вполне применимы в любой другой:


Самое интересное, на мой взгляд, это структура на листе 2 объединяющая плюсы и человекопонятной формы и реляционной базы данных. С одной стороны люди просто заносят в удобной структуре данные, видят иерархию и всякие сумматоры, с другой к ним можно обратиться хоть с SQL запросом (для этого в Гугл таблицах есть формула QUERY), хоть сводную таблицу в пару кликов сформировать.

Ну и если кому пригодится скрипт для загрузки файлов “прямо в ячейки таблицы”, делюсь. С подробнейшими комментариями, читается легко, как рецепт пельменей:

// Создание папки в выделенной ячейке
function createFolder(){
  // берем ячейку, в которой стоит курсор
  var currentCell = SpreadsheetApp.getCurrentCell(); 
  // проверяем, что она пустая (папки создаем только в пустых)
  if (currentCell.isBlank()) {
    // берем текущую таблицу
    var ss = SpreadsheetApp.getActiveSpreadsheet(); //берем текущую таблицу
    // при первом запуске рядом с таблицей создается родительска папка, в которой будут все папки, создаваемые в ячейках
    // чтобы каждый раз обращаться к родительской папке, ее id будет храниться в ячейке А1 на листе "settings", который тоже будет создан при первом запуске
    // берем в таблице лист settings
    var settingsSheet = ss.getSheetByName("settings");
    // если взять не получилось, значит листа еще не существует и родительской папке тоже (т.е. это первый запуск)
    if (!settingsSheet) {
      // создаем родительскую папку
      var contentFolder = DriveApp.getFileById(ss.getId()).getParents().next().createFolder("Файлы "+ss.getName());
      // создаем лист settings
      settingsSheet = ss.insertSheet('settings');
      // скрываем его, чтобы людей не отвлекать
      settingsSheet.hideSheet();
      // записываем в ячейку А1 id родительской папки
      settingsSheet.getRange(1, 1).setValue(contentFolder.getId());
    };
    // создаем папку в родительской папке (в качстве имени берется ставится текущая дата, но можете использовать значения из других ячеек)
    var newFolder = DriveApp.getFolderById(settingsSheet.getRange(1, 1).getValue()).createFolder((new Date()).toISOString());
    // в текущую ячейку вставляем надпись "Файлы" и ссылку на папку
    currentCell.setFormula('=HYPERLINK("https://drive.google.com/drive/folders/' + newFolder.getId() + '";"Файлы")');
  }else{
    // если ячейка была все таки не пустая, выдаем сообщение
    Browser.msgBox("Можно создать папку только в пустой ячейке")
  }
}


Интересно узнать конструктивную критику от тех, кто в теме. Ну и любые полезные мнения, дополнения, советы.