Google Таблицы. Урок 90. Как данные из таблицы Google подставить в текстовый файл Google документы
HTML-код
- Опубликовано: 16 окт 2024
- Google Таблицы. Урок 90. Как данные из таблицы Google подставить в текстовый файл Google документы
Добрый день!
В этом видео-уроке по Google Spreadsheet (Гугл Таблицам) мы с Вами научимся править текстовые файлы из Google документы, заменять текст на данные из Гугл таблиц.
function Creator() {
const docFile = DriveApp.getFileById("1bCHPez1OTRtt7tgmlkYPoV3OC7j1yl1CaRfkltZzcTQ");
// это файл шаблона
const tempFolder = DriveApp.getFolderById("19HPiA8XXpCOgTXithaOF3166zq6yOCOi");
// это директория для новых файлов
const tempFile = docFile.makeCopy(tempFolder);
// делаем копию шаблона
const tempDocFile = DocumentApp.openById(tempFile.getId());
// открываем созданную копию
const body = tempDocFile.getBody();
// тело файла копии
var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var a1 = list.getRange(1, 2).getValue()
var a2 = list.getRange(2, 2).getValue();
var a3 = list.getRange(3, 2).getValue();
var a4 = list.getRange(4, 2).getValue();
body.replaceText("{Получатель}", a1);
body.replaceText("{Адрес получателя}", a2);
body.replaceText("{Обращение}", a3);
body.replaceText("{сообщение}", a4);
tempDocFile.saveAndClose();
}
Посетите наш сайт: e-sdelano.ru
Наш канал в Яндекс Дзен: zen.yandex.ru/...
Этот канал есть и на RUTUBE: rutube.ru/chan...
Подписывайтесь на Телеграм (@esdelano): t.me/esdelano
Буду рад любым пожертвованиям на поддержку канала yoomoney.ru/to...
Я вас обожаю! Как просто и понятно вы всё объясняете! Спасибо вам огромное!
Оказывается всё просто и совсем не сложно!
Спасибо, ждём новых уроков
Это просто мега круто🎉🎉🎉 огонь спасибо вам
Оч полезно. Спасибо!
Спасибо. Можно ли копии документа автоматически присваивать название, например, что бы в названии документа присутствовало значение кому документ предназначен. Так проще будет их отличать. Спасибо за уроки. Так же было бы интересно узнать про различные методы скриптов, основные команды в этих методах.
Да. Файлы можно переименовывать.
Я это буду рассказывать в уроке про pdf файлы (это через 1 или 2 урока по таблицам).
Про методы сделаю отдельный урок. Спасибо за идею
Благодарю Вас за видео, очень сильно помогли!
Спасибо за Ваш отзыв! Рад что помогло
Спасибо большое!
Потрясающе! Спасибо!!!! Подписался, поделился, пролайкал и спонсировал )) Как можно договориться с Вами о частных уроках под конкретную задачу?
Получилось! Спасибо!
На здоровье!
Очень пригодилось.А можно вставить в формулу гугл документа данные из таблицы и как это сделать?
Добрый день! Подскажите, а как подставить данные с таблицы Google в другую таблицу, без формул, скриптом, чтобы так же копировался файл?
Доброго дня.
Написал на основе данного скрипта схожий скрипт на 143 перменных, они все однотипные. Всё работает, скрипт выполняет свою функцию, только в получаемом шаблон возникает следующая проблема - начинается перенос страницы.
Стандартно между последней строкой документа 1 и документа 2 стоят 3 пустых строчки, но почему-то скрипт начинает менять их количестов время от времени и документы съезжают с правильной позицией листа.
По сути, сделал всё то же самое, как в Вашем видео, только таких листов 20, и у каждого свои 7 индивидуальных перменных и 3 общих для всех страниц, получается на каждой странице по 10 переменных, но вот начинает съезжать, не подскажете что делать?
а что в скрипт надо добавить, чтобы новый документ открывался сам сразу после того, как сгенерируется? у вас вроде есть в скрипте этот код, но он не срабатывает. Когда папка со генерированными документами наполняется, там сложно определить где когда какой был создан
Класс. однозначно лайк. а как сделать чтобы таблица добавлялась в шаблон? Таблица должна быть на отдельном листе и лист называться {Лист1} ????
Клас
Можно ли задать имя нового документа сразу же?
Здравствуйте, подскажите пожалуйста как добавить скрипт напротив ячейки строки. (как в конце видео).
Проблема появилась в этой строке
const tempDocFile=DocumentApp.openById(tempFile.getId());
я так почитал ниже комментарии. писали что это связано с доступом к файлу/ Но это мой файл созданный на моем гугл диске. Выходил из аккаунта, входил вновь. создавал новые документы - без изменений. Помогите, пожалуйста
Добрый день! Проверьте правильность указания ID файла. Обратите внимание, что при использовании этой конструкции нужно указывать именно ID файла, а не его имя и не ссылку на него
@@esdelano id прописаны правильно. Копии создаются, но не открываются
@@esdelano я проверял несколько раз. Копии в указанных дирректориях он создает. но не может получается ее открыть что бы заменить текст в них. меня бы устроил и код который просто меняет текст в одном док-файле, без создания копий. может он бы работал у меня...
@@vitkonkordvitkonkord865 подтверждаю, у меня такая же проблема, не могу ее решить, откликнитесь кто победил
Та же самая проблема в 8 строке, может на гугл диске что-то изменилось что начала проявляться такая проблема, увидим, может автор подскажет
Здравствуйте! При попытке использовать метод создания копии файла получаю ошибку TypeError: DriveApp.makeCopy is not a function. Может, она устарела? Что можно использовать вместо неё?
Добрый день. А как сделать чтобы сформированный документ сразу на печать отправлялся?
Спасибо за уроки, очень полезные. Подскажите, нет ли у вас информации по подобной вставке изображений из Гугл диска ? НАощупь не получилось сделать, хотя прямо чувствую, что близко )
Добрый день!
Вы, когда вставляете фото, там есть возможность выбрать вкладку "На диске"
@@esdelano я про пакетную вставку скриптом.
спасибо за информативное видео! Столкнулась с проблемой : вот этот пункт const tempDocFile = DocumentApp.openById(tempFile.getId()) - пишет ошибка Код 6 . Файл формируется в папке, но замена не происходит. Подскажите, пожалуйста, как решить проблему. Все ID верно ввела.
та же проблема, только не код 6 а ошибка в строке 6. У вас получилось решить?
сама ошибка - Exception: The document is inaccessible. Please try again later.
Как то ранее спрашивал про то как при нажатии на старт выгружать данные строки по своим папкам. Сейчас выгружает все в пдф файлы в одну папку а как сделать что бы по разным папочкам все выгружало с присвоением имени папке.
Добрый день!
Сделаю подобное видео. Чуть позже
@@esdelano Очень ждем)))
Здравствуйте. Спасибо за Ваши видео. Подскажите пожалуйста, столкнулся с такой проблемой при выполненнии скрипта пишет Ошибка
Exception: The document is inaccessible. Please try again later.
Добрый день.
Либо это временная проблема, либо есть проблема с доступом к файлам. При запуске скрипта должно было выйти сообщение, в котором нужно было разрешить доступ к файлам для вашего скрипта. Закройте все приложения (таблицы и документы), зайдите на гугл диск и перелогиньтесь, затем откройте гугл таблицы. Должно всё заработать
@@esdelano К сожалению перелогонился и не помогло ( Ссылается, что ошибка в этой строчке - const tempDocFile = DocumentApp.openById(tempFile.getId());
Доступ файлам я предоставил
@@esdelano Все, проблему решил) Дело в том, что я брал документ (форму) с другого аккаунта гугл диска, скачал и вставил в тот на котором скрипт. В этом и была проблема. В любом случае, спасибо за обратную связь !)
Ок. Отлично.
На самом деле можно было открыть доступ для вашего аккаунта с того, где шаблон
@@dmitriyzakovorotniy365 У меня на этом же месте возникла проблема. Только она в другом заключалась, файл был экселевский, решил копипастой в док)
Подскажите, пжл, как создать один документ на основании заполненных строк (около 10 шт). чтобы все заполненные строки попали в один документ в по порядку в табличную часть?
Добрый день!
В шаблоне сделайте таблицу на 10 строк + 1 строка для заголовка и туда подставляйте даннын
Можно ли сделать так, чтобы автоматически печатались данные из базы данных, печатная форма с указание порядкового номера с такого то по такой.
Да. Конечно можно. Вы можете в скрипт вставить условие Если (IF)
Спасибо, но возникли сложности. Каким образом связывается конкретный лист из многолистовой таблицы? GOOGLEдокумент создал с нуля. Скопировал ID, вставил в скрипе в строчку "файл шаблона". короче все по инструкции, но мне кажется что ошибка именно в строке
var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
нужно ли прописывать где-то имя гугл таблицы и листа? ID указано верно
Добрый день!
В этом скрипте собственно и указывается, что данные будут браться именно с активного листа. Т.е. с того, который открыт в момент запуска скрипта.
Если нужно использовать другой лист, то для переменной list, нужно использовать метод не получения активного листа, а назначения
.setActiveSheet(...)
Вечер добрый. Небольшая проблема с переносом даты (дата тсоздана с помощью формулы today) в шаблон. Они почему-то не очень удобного формата. Как это можно решить? Мне необходим числовой. А он переносит на английском месяц и день недели. Помогите пожалуйста
Здравствуйте. попробуйте вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".
Добрый день! Можете подсказать, как перед созданием копии шаблона очистить все старые файлы в папке?
Добрый день! Есть два пути:
1. Вручную очистить (или удалить) папку на Гугл диске
2. В скрипте прописать удаление папки и ее создание, либо ее очистки: tempFolder.removeFile;
.
А как вы сделали кнопку «Сформировать»?
Вставляете рисунок, нажимаете 3 точечки (правый верхний угол рисунка) и назначаете макрос (название вашей функции)
Добрый день! Подскажите пожалуйста а где теперь находится редактор скриптов - в меню его сейчас нет
Добрый день!
Меню "Расширения", далее пункт "App Script"
@@esdelano спасибо! Очень понятные и полезные уроки. Коротко и по делу главное. Подписался
Подскажите, пожалуйста, а вот эта вся процедура зачем? Для того, чтобы мы одни и те же данные из одной вызгрузки (допустим, нам надо вставлять данные из выгрузки) могли быстро вставлять в разные шаблоны, которые мы подгружаем?
Да.
Допустим Вам нужно подготовить кучу одинаковых документов, но с разными данными. Например Вы можете выгрузить контрагентов из 1с.
Кроме того, вы можете настроить триггер и документы будут формироваться вообще автоматически
ДОбрый день.
Подскажите, а можно как то выгрузить изображение из ячейки в шаблон?
Добрый день! Это не возможно. К сожалению
Вроде текст процедуры напечатал правильно, но текстовка из экселя не переносится в шаблон документа. Работает только инструмент создания копии. в чем может быть проблема?
function Creator() {
const docFile = DriveApp.getFileById("1Qx8LakXrXdhGipQwnzE_IfJXF1CX11aldsoWQFz5S2A");
//это файл шаблона
const tempFolder = DriveApp.getFolderById("1GAu8suSuX-Bce_OpmLrzcHksPSA0d8v7");
//это директория для новых файлов
const tempFile = docFile.makeCopy(tempFolder);
//делаем копию шаблона
const tempDocFile = DocumentApp.openById(tempFile.getId());
//открываем созданную копию
const body = tempDocFile.getBody();
// тело файла копии
var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var a1 = list.getRange(1,2).getValue();
var a2 = list.getRange(2,2).getValue();
var a3 = list.getRange(3,2).getValue();
var a4 = list.getRange(4,2).getValue();
body.replaceText("{Получатель}",a1);
body.replaceText("{Адрес получателя}", a2);
body.replaceText("{Обращение}",a3);
body.replaceText("{сообщение}",a4);
tempDocFile.saveAndClose();
Добрый день. А если несколько видов документов как можно сделать из одних данных множество разных документов? Заранее благодарю
По мне так просто копировать один и тот же скрипт . Просто указывать ид разного шаблона.
Здравствуйте! Подскажите пожалуйста как сделать для этого кода кнопку для мобильной версии!
В мобильной версии это сделать нельзя.
Можно настроить запуск скрипта, например с помощью триггер.
А ещё у меня есть урок о том, как запускать скрипты из мобильной версии. Поищите
@@esdelano смотрела!) Мне нужен именно этот код, для него пробовала сделать триггер, тоже не получилось.
Подскажите пожалуйста как этот код запускать с моб версии?
Добрый день! Подскажите пожалуйста, а как можно сделать чтобы данные вносились со всего столбца, а не из конкретной ячейки?
Только если циклом делать.
У меня когда вставляется дата, то она очень некрасивая получается. Например если в экселе ввожу 27.05.2022, то в текстовом получается такое Fri May 27 2022 10:00:00 GMT+0300 (Москва, стандартное время)
Нашел в комментариях этот метод и помогло: вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".
@@Valerichlg спасибо!!!
Все хорошо, только столкнулся с такой проблемкой:
1. Переменные данные, не вставляются в колонтитул :(
2. Вместо даты типа хх.yy.zzzz вставляются данные типа - Fri Dec 31 2021 00:00:00 GMT+0300 (Moscow Standard Time) как с этим бороться? СПАСИБО!!!
2. попробуйте вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".
@@Viazm спасибо помогло!!!
как добавить данные из конкретной таблицы? очень много у меня открытых таблиц
Здравствуйте. Спасибо за видео. Как с вами можно связаться?
Добрый день! Почта есть в описании канала
@@esdelano
Сайт вижу ссылки на канал вижу, а почту не вижу((
Спасибо огромное за урок! У меня возникла проблема с выполнением скрипта, может кто-то в курсе как решить. Я перепроверила ID, все доки на моем аккаунте, перелогиниться тоже пробовала ничего не помогает((
Exception: You do not have permission to call DocumentApp.openById. Required permissions:
В имени файла нет ошибки? (Может ID не верно откопировали?)
Попробуйте в файле открыть доступ всем у кого есть ссылка
У вас получилось решить эту проблему?
можно ли перенести изображение из таблицы в шаблон?
Нет. Можно только ссылку на изображение из интернета
Получилось объединение гугл док и таблицы?
По этой теме есть урок на канале
@@esdelano если несложно ссылочку можно?
Здравствуйте! Можно ли настроить сохранение названия файла с порядковым номером ("письмо 1", "письмо 2")? И если да, то как можно настроить автоматически создавать файл со следующим номером после уже созданных (есть письмо 1, письмо 2, надо создать письмо i+1)
Добрый день.
Можно переменную с порядковый номером последнего документа хранить где-нибудь на листе.
Считывать его. Дальше используя цикл сохранять нужное количество документов и опять сохранять переменную на листе.
Но!
Можно сделать проще.
Сохраняйте всё время под одним именем. Система автоматически добавит к названию номер копии.
А как можно подставлять фото, если оно приходит в виде ссылки на гугл диск?
Здравствуйте! помогите решить проблему - при назначении скрипта кнопке "выполнить" пишет, что такого скрипта нет, хотя в списке я его вижу
Проверьте пожалуйста написание. Возможно пробел
@@esdelano нет, все верно, перепроверила, написала по другому, все равно не видит((
@@esdelano и еще проблема, все вставленные фрагменты не на своих местах. Порядок внесения в скрипт имеет значение? Должно быть ровно так, как это в договоре прописано? Если какой то текст повторяется, это надо так же неск раз писать?
Спасибо за помощь!
Как сделать кнопку Сформировать в гугл экселе?
Добрый день!
Можно нарисовать, например прямоугольник и назначить ему выполнение макроса
У меня в Инструментах нет редактора скриптов. Что делать?
При переносе процентов из гугл таблицы они в гугл документах выглядят как "доли". Т.е. 20% становится 0,2
Попробуйте использовать другой формат в таблицах, например %
@@esdelano именно их и пробовал. пришлось умножать на число и делить на 100, тогда в итоге получилось
ругается на ((( Exception: Unexpected error while getting the method or property getFolderById on object DriveApp.
скажите, пожалуйста, у вас получилось исправить данную проблему? у меня тоже такая ошибка