Войти

Или войди с помощью

Простые автоматизации для Google Drive

Ирина Чернова avatar |
Простые автоматизации для Google Drive

Работаем с файлами в Google Apps Script.

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

Хранимые в Google Drive файлы можно быстро синхронизировать с жестким диском своего компьютера, а через него – с другими облачными сервисами.

Как использовать скрипты из статьи

  1. Заходим на docs.google.com и авторизируемся;
  2. Создаем новую таблицу;
  3. Открываем Инструменты -> Редактор скриптов;
  4. Копируем в окошко код из примеров и вносим необходимые правки;
  5. Запускаем скрипт и предоставляем ему все разрешения.

Получаем список файлов на диске

Google Drive появился три года назад. У многих пользователей за этот короткий срок успел образоваться необозримый бардак. Просто у сервиса есть две особенности, которые способствует воцарению хаоса в аккаунте юзера:

  • В одном каталоге можно создавать файлы и папки с одинаковыми именами;
  • Все документы, которые отправляются по почте, автоматически оказываются на Google Drive.

Этот скрипт просматривает 100 последних измененных файлов на Google Drive и записывает в таблицу имя, дату создания, тип файла, размер, уникальный ID и дату последнего изменения для каждого документа.

С помощью полученной таблицы можно быстро обозреть содержимое диска и отобрать список файлов для дальнейшей обработки (её примеры будут даны ниже).

[jscript]
function fileList()
{
currentSheet = SpreadsheetApp.getActive();
var files = DriveApp.getFiles();
i=1;
for(i=1;i<=100;i++)
{
files.hasNext();
var file = files.next();
currentSheet.getRange("A"+i).setValue(file.getName());
currentSheet.getRange("B"+i).setValue(file.getDateCreated());
currentSheet.getRange("C"+i).setValue(file.getMimeType());
currentSheet.getRange("D"+i).setValue(file.getSize());
currentSheet.getRange("E"+i).setValue(file.getId());
currentSheet.getRange("F"+i).setValue(file.getLastUpdated());
}
}
[/jscript]

Запустив данный скрипт, вы увидите, что Google Apps Script работает с файлами очень медленно. Каждое заполнение строки таблицы можно отследить визуально. В примерах дается код для обработки только 100 файлов, так просмотр всех документов может несколько десятков минут.

Если вам нужно обработать все документы на диске, необходимо морально подготовиться и вместо 100-кратной итерации использовать другой способ перебора файлов:

[jscript]
files = DriveApp.getFiles();
while (files.hasNext())
{
}
[/jscript]

Узнаем, кто имеет доступ к файлам

Для каждого файла на Google Drive можно указать конкретных пользователей, которые имеют право на просмотр, а также тех, кто имеет право на редактирование. Этот скрипт поможет автоматически отобразить в ячейках таблицы список представителей обоих категорий:

[jscript]
function filesSharing()
{
currentSheet = SpreadsheetApp.getActive();
var files = DriveApp.getFiles();
i=1;
j=1;
for(i=1;i<=100;i++)
{
editors=0;
files.hasNext();
var file = files.next();
currentSheet.getRange("A"+i).setValue(file.getName());
currentSheet.getRange("B"+i).setValue(file.getDateCreated());
currentSheet.getRange("C"+i).setValue(file.getMimeType());
if(file.getEditors().length>0)
{
for(j=1;j<=file.getEditors().length-1;j++)
{
editors=editors + ";" + file.getEditors()[j].getEmail();
}
currentSheet.getRange("D"+i).setValue(editors);
}
if(file.getViewers().length>0)
{
for(j=1;j<=file.getViewers().length-1;j++)
{
editors=editors + ";" + file.getViewers()[j].getEmail();
}
currentSheet.getRange("E"+i).setValue(editors);
}
}
}
[/jscript]

Проверяем, нет ли файлов в общем доступе

Файлам на Google Drive можно присваивать различные типы прав доступа: «доступен только владельцу», «доступен приглашенным пользователям», «доступен всем у кого есть ссылка» и «доступен всем в интернете». Если у документа настроить последний тип прав (а это легко сделать по неосторожности), то он попадет в поисковую выдачу Google. Случайные люди смогут его найти и просмотреть.

Проверить, нет ли таких в вашем хранилище, можно с помощью этого скрипта:

[jscript]
function fileAcess()
{
currentSheet = SpreadsheetApp.getActive();
var files = DriveApp.getFiles();
i=1;
j=1;
for(i=1;i<=100;i++)
{
files.hasNext();
var file = files.next();
if (file.getSharingAccess()=="ANYONE")
{
currentSheet.getRange("A"+j).setValue(file.getName());
currentSheet.getRange("B"+j).setValue(file.getDateCreated());
currentSheet.getRange("C"+j).setValue(file.getMimeType());
currentSheet.getRange("D"+j).setValue(file.getSize());
currentSheet.getRange("E"+j).setValue(file.getSharingAccess());
j++;
}
}
}
[/jscript]

Предоставляем пользователю доступ к файлам

Иногда бывают ситуации, когда человеку необходимо предоставить доступ к нескольким десяткам документов, лежащим в разных папках. Делать это вручную долго и неудобно. Лучше получить список всех файлов первым примером кода в статье (чтобы в столбце E были ID документов), по-быстрому выбрать из них нужные и пройтись по ним этим скриптом:

[jscript]
function addEditor()
{
currentSheet = SpreadsheetApp.getActive();
var files = DriveApp.getFiles();
i=1;
for(i=1;i<=10;i++)
{
id = currentSheet.getRange("E"+i).getValue();
DriveApp.getFileById(id).addEditor("email@example.com")
}
}
[/jscript]

Решаем пользователя доступа к файлам

Бывает и обратная ситуация. К примеру, когда сотрудник увольняется из компании, надо резко лишить его доступа ко всем рабочим документам. Для этого применяется скрипт, обратный вышеприведенному.

В этом случае необходимо убедиться, что в столбце E есть уникальные идентификаторы документов.

[jscript]
function removeEditor()
{
currentSheet = SpreadsheetApp.getActive();
var files = DriveApp.getFiles();
i=1;
for(i=1;i<=100;i++)
{
id = currentSheet.getRange("E"+i).getValue();
DriveApp.getFileById(id).removeEditor("email@example.com");
}
}
[/jscript]

Создаем новые папки

Довольно удобный способ хранения файлов — разложить их по временным периодам. Этот скрипт создаст папки для разных годов и положит в них файлы с соответствующей датой создания:

[jscript]
function createFolders()
{
topFolder = DriveApp.createFolder("Рабочий архив");
for (j=2012;j<=2015;j++)
{
currentFolder = topFolder.createFolder(i);
for(i=1;i<=10;i++)
{
date = currentSheet.getRange("B"+i).getValue();
if(date.getYear()==j)
{
id = currentSheet.getRange("E"+i).getValue();
file = DriveApp.getFileById(id);
currentFolder.addFile(file);
}
}
}
}
[/jscript]

Если знаете другие полезные скрипты для Google Drive, пишите их в комментариях, спасибо!

 

12 комментариев

Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик из TikTok
Котик из TikTok
Котик из TikTok
Котик из TikTok
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Видео мем
Видео мем
Видео мем
Видео мем
Видео мем
Видео мем

Какие правила в комментариях
  1. Майор avatar
    Майор 6 декабря 2015
    0

    И что там обычно хранят ?

    Ирина Чернова avatar
    Ирина Чернова6 декабря 2015
    2

    @Майор, то же что и в Dropbox + созданное в Google Docs, Google Презентации, формы для сбора данных и т.д.

    Майор avatar
    Майор6 декабря 2015
    0

    @Ирина Чернова, А как же OneDrive? В нем не удобней?

    Ирина Чернова avatar
    Ирина Чернова6 декабря 2015
    2

    @Майор, для тех у кого на Windows телефон, планшет и компьютер – OneDrive удобнее безусловно) И там тоже можно писать автоматизации на Power Shell))) А я вот большая поклонница сервисов Google)

    Войди на сайт, чтобы ответить
    Ответить
  2. shelphur avatar
    shelphur 6 декабря 2015
    0

    Полезно, надо опробовать.

    Ирина Чернова avatar
    Ирина Чернова6 декабря 2015
    0

    @shelphur, go ahead:-)

    Войди на сайт, чтобы ответить
    Ответить

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.