Войти

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

Dev Google Apps Script для Docs в примерах

Dev
Ирина Чернова avatar |
Google Apps Script для Docs в примерах

Изучаем основные приемы взаимодействия Google Apps Script с Документами.

Это наша вторая статья про Google Apps Script — подвиде JavaScript, обогащенном классами и методами для работы с сервисами Google. В первой четыре готовых рецепта, код которых можно вставить в редактор в практически неизменном виде, запустить и мгновенно получить PROFIT.

У этого материала несколько другая задача. Приведенные ниже примеры кода, предназначены скорее для обучения и размышления, чем для быстрого решения проблем. На основе приемов, использованных в этих скриптах можно составить множество классных программ для эффективного решения задач автоматизации работы с Docs. Чтобы не повторяться, для ознакомления с основами использования GAS рекомендуем прочитать статью 4 лайфхака Gmail и Google Apps Script.

Автоматическая генерация документов

Предположим, что вам нужно собрать отзывы о каком-либо событии от всех своих коллег и чтобы один сотрудник не мог видеть записи другого. Один из способов это сделать — создать для каждого человека файл в Google Docs и открыть доступ ему одному.

Для этого создаем новую таблицу в Google Docs, в первый столбец запишем фамилии сотрудников, а во второй их почтовые адреса. Проверяем информацию и запускаем код.

[jscript]function createFiles() {
currentSheet = SpreadsheetApp.getActiveSheet();
countDoc = 2; // Укажите здесь число респондентов в таблице
for (i=1;i<=countDoc;i++)
{
//Создаем документ и записываем в него текст
docName = currentSheet.getRange(‘A’+i).getValue();
doc = DocumentApp.create(docName);
body = doc.getBody();
finalText="Расскажите о своих впечатлениях о конференции, пожалуйста";
body.appendParagraph(finalText);
// Предоставляем человеку доступ к документу
docEditor = currentSheet.getRange(‘B’+i).getValue();
doc.addEditor(docEditor);
currentSheet.getRange(‘C’+i).setValue(doc.getId());
}
}[/jscript]

Проверяем содержимое документов

В день дедлайна, поставленного коллегам для оставления отзывов, необходимо проверить все ли коллеги выполнили просьбу. Открывать каждый документ и смотреть что в нем — избыточная суета. Лучше прочитать все файлы скриптом и записать их содержимое в одну таблицу, чтобы единым взором оценить ситуацию.

Код выполняется из таблицы, созданной в предыдущем примере, так как в ней записаны ID нужных нам документов. С помощью Google Apps Script можно открывать файлы идентифицируя их по имени, дате создания, содержимому и т.д. Но работа с Google Drive тема отдельной подробной статьи, которая появиться на iphones.ru в ближайшее время.

Перед запуском скрипта надо убедиться, что значения в третьем столбце похожи на те, которые изображены на скриншоте.
idinthirdcolumn

[jscript]function checkFiles() {
currentSheet = SpreadsheetApp.getActiveSheet();
countDoc = 2; // Укажите здесь число респондентов в таблице
for (i=1;i<=countDoc;i++)
{
// Открываем документ по уникальному идентификатору (в Google Drive может быть два файла с одинаковым именем в каталоге)
docID = currentSheet.getRange(‘C’+i).getValue(); ;
doc = DocumentApp.openById(docID);
// Получаем его текст и записываем в четвертый столбец
text = doc.getBody().getText();
currentSheet.getRange(‘D’+i).setValue(text);
}
}[/jscript]

Собираем текст нескольких документов в один

После того как мы удостоверились, что все коллеги оставили отзывы, необходимо собрать их все в один текстовый файл, чтобы на его основе составить итоговый отчет. Скрипт выполняется из той же таблицы, что и предыдущие два фрагмента кода.
[jscript]function collectFiles() {
currentSheet = SpreadsheetApp.getActiveSheet();
countDoc = 2; // Укажите здесь число респондентов в таблице
finalText="";
endDoc = DocumentApp.create(‘Все отзывы’);
for (i=1;i<=countDoc;i++)
{
docID = currentSheet.getRange(‘C’+i).getValue();
doc = DocumentApp.openById(docID);
text = doc.getBody().getText();
body = endDoc.getBody();
// Вставляем в файл "Все отзывы" текст с отзывом респондента
body.appendParagraph(currentSheet.getRange(‘A’+i).getValue() +" – " +text);
}
}[/jscript]

Автоматическое форматирование

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

[jscript]function autoFormat()
{
doc = DocumentApp.getActiveDocument();
docText = doc.getBody();
var styleOne = {};
styleOne[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;
styleOne[DocumentApp.Attribute.FONT_FAMILY] = ‘Arial’;
styleOne[DocumentApp.Attribute.FONT_SIZE] = 16;
styleOne[DocumentApp.Attribute.FOREGROUND_COLOR]="#FF0000";
var styleTwo = {};
styleOne[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;
styleOne[DocumentApp.Attribute.FONT_FAMILY] = ‘Calibri’;
styleOne[DocumentApp.Attribute.FONT_SIZE] = 14;
styleOne[DocumentApp.Attribute.BOLD] = true;
styleOne[DocumentApp.Attribute.BACKGROUND_COLOR]="#FF0000";
paragraphs = docText.getParagraphs();
// Перебираем все абзацы документа
for (i=1; i<=paragraphs.length-1;i++)
{
if(i & 1)
{
paragraphs[i].setAttributes(styleOne);
}
else
{
paragraphs[i].setAttributes(styleTwo);
}
}
}[/jscript]

 

1 комментарий

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

Какие правила в комментариях
  1. karapeichik avatar
    karapeichik 25 декабря 2016
    0

    Ирина здравствуйте.
    Благодарю за примеры скриптов.
    Можете подсказать как получить в столбце С активную ссылку или полный адрес генерируемого документа (вместо 1V1WjNpLYnDPVESPeVkBa6g5CqncXfLyb7aKJ6ywERVw)? В примере автоматической генерации документов. Как вывести кнопки запуска скрипта в меню Гугл таблицы? Спасибо.

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

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

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