Google Таблицы. Урок 90. Как данные из таблицы Google подставить в текстовый файл Google документы

Sdílet
Vložit
  • čas přidán 28. 10. 2020
  • 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/sdelano
    Этот канал есть и на RUTUBE: rutube.ru/channel/23934103/
    Подписывайтесь на Телеграм (@esdelano): t.me/esdelano
    Буду рад любым пожертвованиям на поддержку канала yoomoney.ru/to/41001252667153

Komentáře • 109

  • @psergio_it4884
    @psergio_it4884 Před 3 měsíci

    Оказывается всё просто и совсем не сложно!
    Спасибо, ждём новых уроков

  • @Ten0leg
    @Ten0leg Před 4 měsíci

    Оч полезно. Спасибо!

  • @user-jm5cm5dp3k
    @user-jm5cm5dp3k Před 3 lety

    Благодарю Вас за видео, очень сильно помогли!

    • @esdelano
      @esdelano  Před 3 lety +2

      Спасибо за Ваш отзыв! Рад что помогло

  • @Silurina1
    @Silurina1 Před 2 lety

    Спасибо большое!

  • @user-dh9js3fl1x
    @user-dh9js3fl1x Před 6 měsíci

    Это просто мега круто🎉🎉🎉 огонь спасибо вам

  • @VS-bz2fu
    @VS-bz2fu Před 2 lety

    Получилось! Спасибо!

  • @PavelKnyazev_ptm01
    @PavelKnyazev_ptm01 Před 3 lety +1

    Потрясающе! Спасибо!!!! Подписался, поделился, пролайкал и спонсировал )) Как можно договориться с Вами о частных уроках под конкретную задачу?

  • @user-rq9po2zv4k
    @user-rq9po2zv4k Před 5 měsíci

    Клас

  • @andreiviltouski2390
    @andreiviltouski2390 Před 3 lety +8

    Спасибо. Можно ли копии документа автоматически присваивать название, например, что бы в названии документа присутствовало значение кому документ предназначен. Так проще будет их отличать. Спасибо за уроки. Так же было бы интересно узнать про различные методы скриптов, основные команды в этих методах.

    • @esdelano
      @esdelano  Před 3 lety +3

      Да. Файлы можно переименовывать.
      Я это буду рассказывать в уроке про pdf файлы (это через 1 или 2 урока по таблицам).
      Про методы сделаю отдельный урок. Спасибо за идею

  • @user-ys4gc5ie2i
    @user-ys4gc5ie2i Před 9 měsíci

    Очень пригодилось.А можно вставить в формулу гугл документа данные из таблицы и как это сделать?

  • @itstepkhm3100
    @itstepkhm3100 Před 2 lety +1

    Добрый день! Подскажите, а как подставить данные с таблицы Google в другую таблицу, без формул, скриптом, чтобы так же копировался файл?

  • @inhype
    @inhype Před 9 měsíci

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

  • @alexanderkulikov9609
    @alexanderkulikov9609 Před 2 lety

    Спасибо за уроки, очень полезные. Подскажите, нет ли у вас информации по подобной вставке изображений из Гугл диска ? НАощупь не получилось сделать, хотя прямо чувствую, что близко )

    • @esdelano
      @esdelano  Před 2 lety

      Добрый день!
      Вы, когда вставляете фото, там есть возможность выбрать вкладку "На диске"

    • @alexanderkulikov9609
      @alexanderkulikov9609 Před 2 lety

      @@esdelano я про пакетную вставку скриптом.

  • @andreu811
    @andreu811 Před rokem

    Здравствуйте, подскажите пожалуйста как добавить скрипт напротив ячейки строки. (как в конце видео).

  • @user-zu3zf3cs4u
    @user-zu3zf3cs4u Před rokem

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

    • @esdelano
      @esdelano  Před rokem

      Да. Конечно можно. Вы можете в скрипт вставить условие Если (IF)

  • @alterego5982
    @alterego5982 Před 5 měsíci

    Класс. однозначно лайк. а как сделать чтобы таблица добавлялась в шаблон? Таблица должна быть на отдельном листе и лист называться {Лист1} ????

  • @gothic_community
    @gothic_community Před 2 měsíci

    Доброго дня.
    Написал на основе данного скрипта схожий скрипт на 143 перменных, они все однотипные. Всё работает, скрипт выполняет свою функцию, только в получаемом шаблон возникает следующая проблема - начинается перенос страницы.
    Стандартно между последней строкой документа 1 и документа 2 стоят 3 пустых строчки, но почему-то скрипт начинает менять их количестов время от времени и документы съезжают с правильной позицией листа.
    По сути, сделал всё то же самое, как в Вашем видео, только таких листов 20, и у каждого свои 7 индивидуальных перменных и 3 общих для всех страниц, получается на каждой странице по 10 переменных, но вот начинает съезжать, не подскажете что делать?

  • @MonMihail
    @MonMihail Před 3 lety

    Добрый день! Можете подсказать, как перед созданием копии шаблона очистить все старые файлы в папке?

    • @esdelano
      @esdelano  Před 3 lety +1

      Добрый день! Есть два пути:
      1. Вручную очистить (или удалить) папку на Гугл диске
      2. В скрипте прописать удаление папки и ее создание, либо ее очистки: tempFolder.removeFile;
      .

  • @BagirMamedov
    @BagirMamedov Před 3 měsíci

    Можно ли задать имя нового документа сразу же?

  • @user-cw8kl3cn4r
    @user-cw8kl3cn4r Před rokem

    спасибо за информативное видео! Столкнулась с проблемой : вот этот пункт const tempDocFile = DocumentApp.openById(tempFile.getId()) - пишет ошибка Код 6 . Файл формируется в папке, но замена не происходит. Подскажите, пожалуйста, как решить проблему. Все ID верно ввела.

    • @user-vb9js3ny7z
      @user-vb9js3ny7z Před 7 měsíci

      та же проблема, только не код 6 а ошибка в строке 6. У вас получилось решить?
      сама ошибка - Exception: The document is inaccessible. Please try again later.

  • @artemk.6904
    @artemk.6904 Před 3 lety

    ДОбрый день.
    Подскажите, а можно как то выгрузить изображение из ячейки в шаблон?

    • @esdelano
      @esdelano  Před 3 lety

      Добрый день! Это не возможно. К сожалению

  • @user-zh9ww6oh9f
    @user-zh9ww6oh9f Před rokem

    Подскажите, пжл, как создать один документ на основании заполненных строк (около 10 шт). чтобы все заполненные строки попали в один документ в по порядку в табличную часть?

    • @esdelano
      @esdelano  Před rokem

      Добрый день!
      В шаблоне сделайте таблицу на 10 строк + 1 строка для заголовка и туда подставляйте даннын

  • @user-nf7jk4mw4r
    @user-nf7jk4mw4r Před rokem

    Здравствуйте! При попытке использовать метод создания копии файла получаю ошибку TypeError: DriveApp.makeCopy is not a function. Может, она устарела? Что можно использовать вместо неё?

  • @assetkussainov
    @assetkussainov Před 3 lety

    Здравствуйте! Можно ли настроить сохранение названия файла с порядковым номером ("письмо 1", "письмо 2")? И если да, то как можно настроить автоматически создавать файл со следующим номером после уже созданных (есть письмо 1, письмо 2, надо создать письмо i+1)

    • @esdelano
      @esdelano  Před 3 lety +1

      Добрый день.
      Можно переменную с порядковый номером последнего документа хранить где-нибудь на листе.
      Считывать его. Дальше используя цикл сохранять нужное количество документов и опять сохранять переменную на листе.
      Но!
      Можно сделать проще.
      Сохраняйте всё время под одним именем. Система автоматически добавит к названию номер копии.

  • @user-uf4dn3rg7t
    @user-uf4dn3rg7t Před 5 měsíci

    Добрый день. А как сделать чтобы сформированный документ сразу на печать отправлялся?

  • @user-vy1vj8os8g
    @user-vy1vj8os8g Před 2 lety +1

    Как то ранее спрашивал про то как при нажатии на старт выгружать данные строки по своим папкам. Сейчас выгружает все в пдф файлы в одну папку а как сделать что бы по разным папочкам все выгружало с присвоением имени папке.

    • @esdelano
      @esdelano  Před 2 lety +1

      Добрый день!
      Сделаю подобное видео. Чуть позже

    • @user-vy1vj8os8g
      @user-vy1vj8os8g Před 2 lety

      @@esdelano Очень ждем)))

  • @Mrator2010
    @Mrator2010 Před 3 lety

    Добрый день. А если несколько видов документов как можно сделать из одних данных множество разных документов? Заранее благодарю

    • @user-rl9xp8jc2o
      @user-rl9xp8jc2o Před 3 lety +1

      По мне так просто копировать один и тот же скрипт . Просто указывать ид разного шаблона.

  • @linfarr7162
    @linfarr7162 Před rokem

    Вроде текст процедуры напечатал правильно, но текстовка из экселя не переносится в шаблон документа. Работает только инструмент создания копии. в чем может быть проблема?
    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();

  • @user-rl9xp8jc2o
    @user-rl9xp8jc2o Před 3 lety

    Вечер добрый. Небольшая проблема с переносом даты (дата тсоздана с помощью формулы today) в шаблон. Они почему-то не очень удобного формата. Как это можно решить? Мне необходим числовой. А он переносит на английском месяц и день недели. Помогите пожалуйста

    • @Viazm
      @Viazm Před 3 lety +2

      Здравствуйте. попробуйте вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".

  • @13Tonyn
    @13Tonyn Před 3 lety

    Здравствуйте. Спасибо за видео. Как с вами можно связаться?

    • @esdelano
      @esdelano  Před 3 lety +1

      Добрый день! Почта есть в описании канала

    • @13Tonyn
      @13Tonyn Před 3 lety

      @@esdelano
      Сайт вижу ссылки на канал вижу, а почту не вижу((

  • @user-gp4js5xh2r
    @user-gp4js5xh2r Před 3 lety

    Добрый день! Подскажите пожалуйста, а как можно сделать чтобы данные вносились со всего столбца, а не из конкретной ячейки?

    • @esdelano
      @esdelano  Před 3 lety

      Только если циклом делать.

  • @dmitriyzakovorotniy365
    @dmitriyzakovorotniy365 Před 3 lety +1

    Здравствуйте. Спасибо за Ваши видео. Подскажите пожалуйста, столкнулся с такой проблемой при выполненнии скрипта пишет Ошибка
    Exception: The document is inaccessible. Please try again later.

    • @esdelano
      @esdelano  Před 3 lety +1

      Добрый день.
      Либо это временная проблема, либо есть проблема с доступом к файлам. При запуске скрипта должно было выйти сообщение, в котором нужно было разрешить доступ к файлам для вашего скрипта. Закройте все приложения (таблицы и документы), зайдите на гугл диск и перелогиньтесь, затем откройте гугл таблицы. Должно всё заработать

    • @dmitriyzakovorotniy365
      @dmitriyzakovorotniy365 Před 3 lety +1

      @@esdelano К сожалению перелогонился и не помогло ( Ссылается, что ошибка в этой строчке - const tempDocFile = DocumentApp.openById(tempFile.getId());
      Доступ файлам я предоставил

    • @dmitriyzakovorotniy365
      @dmitriyzakovorotniy365 Před 3 lety +1

      @@esdelano Все, проблему решил) Дело в том, что я брал документ (форму) с другого аккаунта гугл диска, скачал и вставил в тот на котором скрипт. В этом и была проблема. В любом случае, спасибо за обратную связь !)

    • @esdelano
      @esdelano  Před 3 lety +1

      Ок. Отлично.
      На самом деле можно было открыть доступ для вашего аккаунта с того, где шаблон

    • @Tucha12
      @Tucha12 Před 3 lety

      @@dmitriyzakovorotniy365 У меня на этом же месте возникла проблема. Только она в другом заключалась, файл был экселевский, решил копипастой в док)

  • @daniilpostnov
    @daniilpostnov Před rokem

    А как вы сделали кнопку «Сформировать»?

    • @esdelano
      @esdelano  Před rokem +1

      Вставляете рисунок, нажимаете 3 точечки (правый верхний угол рисунка) и назначаете макрос (название вашей функции)

  • @vitkonkordvitkonkord865

    Спасибо, но возникли сложности. Каким образом связывается конкретный лист из многолистовой таблицы? GOOGLEдокумент создал с нуля. Скопировал ID, вставил в скрипе в строчку "файл шаблона". короче все по инструкции, но мне кажется что ошибка именно в строке
    var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    нужно ли прописывать где-то имя гугл таблицы и листа? ID указано верно

    • @esdelano
      @esdelano  Před 2 lety

      Добрый день!
      В этом скрипте собственно и указывается, что данные будут браться именно с активного листа. Т.е. с того, который открыт в момент запуска скрипта.
      Если нужно использовать другой лист, то для переменной list, нужно использовать метод не получения активного листа, а назначения
      .setActiveSheet(...)

  • @user-yl7tu4lr1w
    @user-yl7tu4lr1w Před 3 lety

    Подскажите, пожалуйста, а вот эта вся процедура зачем? Для того, чтобы мы одни и те же данные из одной вызгрузки (допустим, нам надо вставлять данные из выгрузки) могли быстро вставлять в разные шаблоны, которые мы подгружаем?

    • @esdelano
      @esdelano  Před 3 lety

      Да.
      Допустим Вам нужно подготовить кучу одинаковых документов, но с разными данными. Например Вы можете выгрузить контрагентов из 1с.
      Кроме того, вы можете настроить триггер и документы будут формироваться вообще автоматически

  • @Valerichlg
    @Valerichlg Před 2 lety

    У меня когда вставляется дата, то она очень некрасивая получается. Например если в экселе ввожу 27.05.2022, то в текстовом получается такое Fri May 27 2022 10:00:00 GMT+0300 (Москва, стандартное время)

    • @Valerichlg
      @Valerichlg Před 2 lety +1

      Нашел в комментариях этот метод и помогло: вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".

    • @inhype
      @inhype Před 10 měsíci

      @@Valerichlg спасибо!!!

  • @prestaden
    @prestaden Před 3 lety

    Все хорошо, только столкнулся с такой проблемкой:
    1. Переменные данные, не вставляются в колонтитул :(
    2. Вместо даты типа хх.yy.zzzz вставляются данные типа - Fri Dec 31 2021 00:00:00 GMT+0300 (Moscow Standard Time) как с этим бороться? СПАСИБО!!!

    • @Viazm
      @Viazm Před 3 lety +1

      2. попробуйте вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".

    • @Gabilen
      @Gabilen Před 9 měsíci

      @@Viazm спасибо помогло!!!

  • @user-hr7kt4yp1b
    @user-hr7kt4yp1b Před 2 lety

    Добрый день! Подскажите пожалуйста а где теперь находится редактор скриптов - в меню его сейчас нет

    • @esdelano
      @esdelano  Před 2 lety +1

      Добрый день!
      Меню "Расширения", далее пункт "App Script"

    • @user-hr7kt4yp1b
      @user-hr7kt4yp1b Před 2 lety

      @@esdelano спасибо! Очень понятные и полезные уроки. Коротко и по делу главное. Подписался

  • @pacifist1937
    @pacifist1937 Před 2 lety

    можно ли перенести изображение из таблицы в шаблон?

    • @esdelano
      @esdelano  Před 2 lety

      Нет. Можно только ссылку на изображение из интернета

  • @user-cq3zv9mb6p
    @user-cq3zv9mb6p Před 2 lety +1

    Спасибо огромное за урок! У меня возникла проблема с выполнением скрипта, может кто-то в курсе как решить. Я перепроверила ID, все доки на моем аккаунте, перелогиниться тоже пробовала ничего не помогает((
    Exception: You do not have permission to call DocumentApp.openById. Required permissions:

    • @esdelano
      @esdelano  Před 2 lety

      В имени файла нет ошибки? (Может ID не верно откопировали?)
      Попробуйте в файле открыть доступ всем у кого есть ссылка

    • @user-xl2zw3nw2z
      @user-xl2zw3nw2z Před 6 měsíci

      У вас получилось решить эту проблему?

  • @user-yp6bo7pn5g
    @user-yp6bo7pn5g Před 2 lety

    Как сделать кнопку Сформировать в гугл экселе?

    • @esdelano
      @esdelano  Před 2 lety

      Добрый день!
      Можно нарисовать, например прямоугольник и назначить ему выполнение макроса

  • @alinashyroka4137
    @alinashyroka4137 Před rokem

    Здравствуйте! Подскажите пожалуйста как сделать для этого кода кнопку для мобильной версии!

    • @esdelano
      @esdelano  Před rokem

      В мобильной версии это сделать нельзя.
      Можно настроить запуск скрипта, например с помощью триггер.
      А ещё у меня есть урок о том, как запускать скрипты из мобильной версии. Поищите

    • @alinashyroka4137
      @alinashyroka4137 Před rokem

      @@esdelano смотрела!) Мне нужен именно этот код, для него пробовала сделать триггер, тоже не получилось.
      Подскажите пожалуйста как этот код запускать с моб версии?

  • @vitkonkordvitkonkord865
    @vitkonkordvitkonkord865 Před 2 lety +3

    Проблема появилась в этой строке
    const tempDocFile=DocumentApp.openById(tempFile.getId());
    я так почитал ниже комментарии. писали что это связано с доступом к файлу/ Но это мой файл созданный на моем гугл диске. Выходил из аккаунта, входил вновь. создавал новые документы - без изменений. Помогите, пожалуйста

    • @esdelano
      @esdelano  Před 2 lety

      Добрый день! Проверьте правильность указания ID файла. Обратите внимание, что при использовании этой конструкции нужно указывать именно ID файла, а не его имя и не ссылку на него

    • @Leon-bo1kl
      @Leon-bo1kl Před 2 lety

      @@esdelano id прописаны правильно. Копии создаются, но не открываются

    • @vitkonkordvitkonkord865
      @vitkonkordvitkonkord865 Před 2 lety

      @@esdelano я проверял несколько раз. Копии в указанных дирректориях он создает. но не может получается ее открыть что бы заменить текст в них. меня бы устроил и код который просто меняет текст в одном док-файле, без создания копий. может он бы работал у меня...

    • @sergey_5081
      @sergey_5081 Před 2 lety

      @@vitkonkordvitkonkord865 подтверждаю, у меня такая же проблема, не могу ее решить, откликнитесь кто победил

    • @jackdaniels7309
      @jackdaniels7309 Před 2 lety

      Та же самая проблема в 8 строке, может на гугл диске что-то изменилось что начала проявляться такая проблема, увидим, может автор подскажет

  • @Gabilen
    @Gabilen Před 9 měsíci

    Получилось объединение гугл док и таблицы?

    • @esdelano
      @esdelano  Před 9 měsíci

      По этой теме есть урок на канале

  • @romhikpomhik
    @romhikpomhik Před 2 lety

    А как можно подставлять фото, если оно приходит в виде ссылки на гугл диск?

  • @PavelKnyazev_ptm01
    @PavelKnyazev_ptm01 Před 3 lety

    При переносе процентов из гугл таблицы они в гугл документах выглядят как "доли". Т.е. 20% становится 0,2

    • @esdelano
      @esdelano  Před 3 lety

      Попробуйте использовать другой формат в таблицах, например %

    • @PavelKnyazev_ptm01
      @PavelKnyazev_ptm01 Před 3 lety

      @@esdelano именно их и пробовал. пришлось умножать на число и делить на 100, тогда в итоге получилось

  • @antonponomarev5382
    @antonponomarev5382 Před rokem

    У меня в Инструментах нет редактора скриптов. Что делать?

  • @opavtoopavto
    @opavtoopavto Před rokem

    ругается на ((( Exception: Unexpected error while getting the method or property getFolderById on object DriveApp.

    • @user-gv5qe8gw6z
      @user-gv5qe8gw6z Před 6 měsíci

      скажите, пожалуйста, у вас получилось исправить данную проблему? у меня тоже такая ошибка

  • @user-yd4fj9tp4t
    @user-yd4fj9tp4t Před rokem

    Здравствуйте! помогите решить проблему - при назначении скрипта кнопке "выполнить" пишет, что такого скрипта нет, хотя в списке я его вижу

    • @esdelano
      @esdelano  Před rokem

      Проверьте пожалуйста написание. Возможно пробел

    • @user-yd4fj9tp4t
      @user-yd4fj9tp4t Před rokem

      @@esdelano нет, все верно, перепроверила, написала по другому, все равно не видит((

    • @user-yd4fj9tp4t
      @user-yd4fj9tp4t Před rokem

      @@esdelano и еще проблема, все вставленные фрагменты не на своих местах. Порядок внесения в скрипт имеет значение? Должно быть ровно так, как это в договоре прописано? Если какой то текст повторяется, это надо так же неск раз писать?
      Спасибо за помощь!

  • @vgordenkov
    @vgordenkov Před 8 měsíci

    как добавить данные из конкретной таблицы? очень много у меня открытых таблиц