Как данные из таблицы google подставить в текстовый файл google документы

Обновлено: 06.07.2024

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

  • создать шаблоны документов Google Docs, куда будут вставляться данные контрагентов;
  • создать документ Google Sheets, где будут хранится данные контрагентов и ссылки на шаблоны документов,
  • и написать скрипт, который будет управлять процессом выбора контрагентов и вставки данных выбранных контрагентов в шаблоны документов.

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

body.replaceText("", "klient data");

Начнём с таблицы. В нашем примере мы сделали три "информационных столбца": имя клиента, номер ID, дата издания ID. Чтобы облегчить редактирование шаблона имена столбцов мы назовем их также, как и имена меток в Google Docs. И, поскольку это - метки (места вставок), то сразу определим для себя, что метки мы всегда будем заключать в фигурные скобки.


Помимо информационных столбцов здесь также находятся "вспомогательные столбцы", с помощью которых реализован интерфейс нашей программы: КТО выдаёт (кто заключает договор), КОМУ выдаёт (с кем заключает договор) и какой ШАБЛОН документа при этом используется.

В качестве шаблона документа, к которому обращается скрипт, был использован следующий вариант доверенности.

Для того, чтобы различить метки доверителя и поверенного, к меткам доверителя был добавлен элемент текста - [principal_], а к меткам поверенного - [attorney_].


Скрипт, представленный ниже, реализует следующие задачи:

  • определение выбранных клиентов и чтение данных этих клиентов с листа Google Sheets;
  • нахождение выбранного шаблона в Google Drive, создание копии выбранного шаблона и сохранение её под новым именем;
  • открытие документа (только что созданной копии шаблона) и замене меток на данные контрагентов.

Более подробные объяснения о работе скрипта Вы сможете получить, ознакомившись с данным видео:

Google Таблицы (Google Spreadsheets) — табличный, а не текстовый редактор, тем не менее там часто приходится иметь дело именно с текстом. Рассказываем о соответствующих функциях.

ДЛСТР (LEN)

ДЛСТР (LEN) — функция для вычисления длины строки. Пригодится, если работаете в Google Sheets с контент-планами, текстами объявлений, метатегами — сразу можно проверить, соответствует текст нужным критериям или нет.

Синтаксис простой, аргумент один — текстовая строка (можно указать прямо в формуле или взять из ячейки). Например, =ДЛСТР("Блог CyberMarketing про интернет-маркетинг") вернет значение 42. Учитываются все символы, включая пробелы и переводы строки.

Если нужно проверить тайтлы страниц, а сами они пока неизвестны, можно вложить в LEN функцию IMPORTXML: =ДЛСТР(IMPORTXML(B2;"//title")) В данном случае результатом станет длина метатега TITLE, полученного для URL, который лежит в ячейке B2.

25+ функций Google Таблиц для работы с текстом

Так работает IMPORTXML, вложенный в LEN

СТРОЧН (LOWER), ПРОПИСН (UPPER)

СТРОЧН (LOWER) приводит все символы к нижнему регистру, а ПРОПИСН (UPPER) — наоборот, к верхнему. Обе текстовые функции принимают один аргумент — строку в кавычках или ячейку с текстом. Получается, конструкция =ПРОПИСН(СТРОЧН("CYBERMARKETING")) выведет ту же самую строку — "CYBERMARKETING".

Но на практике часто можно обойтись без этих функций. Для поиска без учета регистра есть ПОИСК (SEARCH) — о ней чуть позже. А, например, у QUERY, которую мы разбирали в предыдущей статье, есть свои встроенные функции — upper() и lower() — для приведения строк к единому регистру.

СЦЕПИТЬ (CONCATENATE), JOIN, TEXTJOIN

Все три функции объединяют несколько строк в одну. Работают похожим способом, но есть некоторые отличия.

CONCATENATE (СЦЕПИТЬ) дословно сцепляют несколько строк между собой по очереди. Синтаксис: =СЦЕПИТЬ("Hello";", ";"World";"!")

25+ функций Google Таблиц для работы с текстом

Простой пример использования CONCATENATE. Но такой способ, подойдет, пожалуй, только для немецкого языка.

Чтобы они не слипались между собой, придется каждый раз добавлять между ними пробел (или другой символ). Например: =СЦЕПИТЬ(A15;" ";B15;" ";C15;" ";D15) Или создавать таблицу, где в одном столбце — нужные слова, в другом — соединители. (Если в параметре указан диапазон — минимум по 2 ячейки в высоту и ширину — функция будет объединять значения по строкам.)

25+ функций Google Таблиц для работы с текстом

В таком случае только надо оставить последнюю ячейку пустой — иначе в конце созданной строки будет лишний пробел

Как вы понимаете, СЦЕПИТЬ далеко не самая удобная функция. JOIN же позволяет сразу задать единый разделитель для всех строк в массиве/диапазоне: =JOIN(" ";A16:A19) даст такой же результат, как на предыдущем скриншоте — при этом не надо беспокоиться за возможный лишний символ в конце строки.

Следующая функция подойдет лучше, если в массиве/диапазоне встречаются пустые строки — ведь в JOIN они создают лишние пробелы. А TEXTJOIN делает все то же самое, только есть дополнительный аргумент, который указывает: включать пустые строки или нет. Синтаксис: =TEXTJOIN(" ";ИСТИНА;A16:B20), где первый параметр передает пробел в качестве разделителя, второй говорит, что нужно игнорировать пустые строки, а третий — дает диапазон значений для соединения.

25+ функций Google Таблиц для работы с текстом

Здесь все правильно соединяется — ничего лишнего

А подробнее о том, что делать с ключевыми словами, вы сможете узнать с помощью статей, вебинаров, курсов по SEO от CyberMarketing.

СЖПРОБЕЛЫ (TRIM)

Если проблема с пробелами все же есть, ее поможет решить специальная функция — СЖПРОБЕЛЫ (TRIM). Она чистит их в начале и конце текста, а также убирает повторяющиеся символы, например, двойные пробелы.

Синтаксис простой и понятный, аргумент один — строка целиком или ссылка на ячейку: =СЖПРОБЕЛЫ(" Hello, World! ")

25+ функций Google Таблиц для работы с текстом

Так работает СЖПРОБЕЛЫ

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

ЛЕВСИМВ (LEFT), ПРАВСИМВ (RIGHT), ПСТР (MID)

Все три функции извлекают из строки один или несколько символов: первая берет их слева, вторая — справа, третья — прямо из середины. Примеры:

  • =ЛЕВСИМВ("Привет, мир!";6) — тут получится просто "Привет".
  • =ПРАВСИМВ("Привет, мир!"; 4) — здесь от строки останется только "мир!".
  • =ПСТР("Привет, мир!"; 4; 3) — выведет лишь "вет".

С ЛЕВСИМВ и ПРАВСИМВ все должно быть и так понятно (кстати, последним параметром может быть ноль, тогда функция просто вернет пустую строку). А вот ПСТР работает так: вторым аргументом принимает номер символа, с которого нужно начать извлечение подстроки, а третьим — длину извлекаемой подстроки. (Важно: отсчет начинается с 1, а не с нуля.)

Конечно, в работе редко бывает заранее известно, где в какой строке и на сколько символов надо отступить. Как правило, такие функции используют в сочетании с другими, например, ДЛСТР и ПОИСК/НАЙТИ.

SPLIT

SPLIT разделяет текст — по одному или нескольким символам-разделителям — и выводит полученные фрагменты в разные ячейки. Сами символы при этом не возвращает. Простой пример: =SPLIT(A10;"/")

1. Текст, который нужно разделить на части. Строкой или ссылкой на ячейку.

2. Символ(-ы) для разделения — тоже строкой, в кавычках.

3. Тип разделителя (необязательно). По умолчанию ИСТИНА — функция разделяет текст по каждому символу, который указан во втором параметре. Если поставить ЛОЖЬ, то разделение будет происходить только по всей последовательности символов.

25+ функций Google Таблиц для работы с текстом

4. Тоже необязательный параметр, который определяет, нужно ли удалять пустые ячейки после разделения. По умолчанию ИСТИНА — два последовательных разделителя будут считаться одним. Если ЛОЖЬ, то между этими разделителями будет создана пустая ячейка.

25+ функций Google Таблиц для работы с текстом

Пожалуй, это не пригодится, SPLIT и так занимает слишком много ячеек

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

REGEXMATCH, REGEXEXTRACT, REGEXREPLACE

Все эти три функции работают с регулярными выражениями — специальным языком для гибких манипуляций с текстами. REGEXMATCH ищет совпадения, REGEXEXTRACT извлекает по шаблону нужный фрагмент, а REGEXREPLACE заменяет одну часть текста на другую. Синтаксис похожий: первый аргумент — текст, а второй — само регулярное выражение; в REGEXREPLACE есть еще третий — текст, который нужно вставить.

UNIQUE, COUNTUNIQUE

Функция UNIQUE берет только те строки, которые ни разу не повторяются, то есть позволяет почистить набор данных от дубликатов. Весьма полезная штука в SEO, PPC, веб-аналитике. Уникальные строки возвращаются в том же порядке, в котором располагаются в диапазоне/массиве.

Синтаксис: =UNIQUE(A2:A100) или =UNIQUE() — тут в столбец выйдут по порядку 5 элементов этого массива, а не 6, потому что два из них неуникальные.

Если нужно не выводить, а только подсчитать количество уников, есть функция COUNTUNIQUE. В нее можно передавать набор из произвольного числа аргументов: значений и диапазонов. Синтаксис: =COUNTUNIQUE(1; 1; 2; 3; 5; 8; 13; A2; B6:B9)

ПОИСК (SEARCH), НАЙТИ (FIND)

Обе функции делают одно и то же: возвращают порядковый номер символа, на котором запрос впервые встречается в тексте. Первым аргументом передаем, что искать, вторым — где искать, третьим — с какого символа искать (поиск идет с начала, учитываются все символы, в том числе пробелы). (В отличие от ЛЕВСИМВ и ПРАВСИМВ, нельзя передать ноль в качестве последнего аргумента.)

Разница лишь в том, что НАЙТИ (FIND) учитывает регистр, а ПОИСК (SEARCH) — нет. Примеры:

Результаты выполнения функции — позиции символов/подстрок — пригодятся, например, для дальнейшей работы с ЛЕВСИМВ, ПРАВСИМВ или ПСТР. Но сами по себе они не понадобятся, если нужно просто проверить: есть в тексте нужное слово или нет. TRUE или FALSE вместо бесполезных цифр поможет получить ЕОШИБКА (ISERROR) (или похожая функция ЕСЛИОШИБКА) в сочетании с функциями IF или IFS (иногда еще нужен NOT). К примеру:

ПОДСТАВИТЬ (SUBSTITUTE)

  1. Текст, для которого нужны поиск и замена.
  2. Строка, которую нужно найти и удалить.
  3. Строка, которую нужно подставить вместо.
  4. Порядковый номер вхождения строки, которую нужно заменить (необязательно). (По умолчанию все совпадения будут заменяться.)

На злобу дня: =ПОДСТАВИТЬ("Привет, мир!";"мир";"карантин") — "Привет, карантин!". Еще пример: =ПОДСТАВИТЬ("Привет, мир!";"р";"г";2) —"Привет, миг!" (‘р’ встречается раньше, но специально указано, что брать следует второй символ по счету).

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

DETECTLANGUAGE и GOOGLETRANSLATE

DETECTLANGUAGE умеет определять язык текста, а GOOGLETRANSLATE — переводить текст с одного языка на другой.

DETECTLANGUAGE принимает один аргумент — текст или диапазон. (Работает только с одномерным столбцом, при передаче диапазона вида A2:B8 выдаст ошибку — обойти можно только через массив.) Если в диапазоне будут тексты на нескольких языках, функция определит язык лишь первого попавшегося фрагмента.

GOOGLETRANSLATE работает с тремя параметрами (два последних необязательные):

  1. Текст, который нужно перевести.
  2. Язык оригинала в таком же формате, каким оперирует DETECTLANGUAGE. (Кстати, можно указать "auto" и он будет определен автоматически — то есть вкладывать одну функцию в другую для этих целей не нужно.)
  3. Язык перевода — аналогично — двумя буквами. (По умолчанию функция берет язык операционной системы, но это не всегда работает, поэтому лучше указывать отдельно.)

С диапазонами не получится, только с отдельными ячейками/строками.

ТЕКСТ (TEXT) И ЗНАЧЕН (VALUE)

Функция ТЕКСТ (TEXT) преобразует числовой формат в текстовый — это может понадобится, например, для динамических таблиц с использованием QUERY, красивого представления данных в отчетах. Первый аргумент — число, дата и/или время, второй — шаблон для форматирования. (‘?’, ‘*’, а также дробные форматы не поддерживаются.) Примеры:

(Все варианты можно посмотреть в справке, а также в разделе «Формат» → «Числа» → «Другие форматы».)

ЗНАЧЕН (VALUE) делает совершенно противоположное — преобразует текст или дату в число. На вход принимает единственный аргумент — строку. Изменение формата может понадобиться, например, когда мы извлекаем данные из текста с помощью REGEXEXTRACT, а потом их нужно использовать для функций суммирования, подсчета среднего арифметического и т. п.

ЕТЕКСТ (ISTEXT)

ЕТЕКСТ (ISTEXT) проверяет, есть в ячейке текст или нет. Если там текстовое значение, возвращает ИСТИНА, если найдет число или пустую ячейку — ЛОЖЬ. Так:

  • =ЕТЕКСТ("123") — TRUE, так как данные, заключенные в кавычки, передаются как строка.
  • =ЕТЕКСТ(123) — FALSE, потому что числа передаются без кавычек.
  • =ЕТЕКСТ("") — тоже TRUE, строка пустая, но все же это строка.

Эта функция чаще используется в условных конструкциях (IF, IFS).

СОВПАД (EXACT)

СОВПАД (EXACT) — специальная функция Таблиц для сравнения двух строк: если они полностью совпадают, вернется TRUE, если нет — FALSE. Важны и пробелы, и регистры. К примеру, =СОВПАД("Cybermarketing";"CyberMarketing") выдаст ЛОЖЬ, так как по одному символу они отличаются.

Если регистр не важен, гораздо проще использовать обычные операторы, например: =ЕСЛИ("CyberMarketing"="Cybermarketing";"Совпадают";"Не совпадают") — здесь будет "Совпадают".

ГИПЕРССЫЛКА (HYPERLINK)

ГИПЕРССЫЛКА (HYPERLINK) создает в ячейку гиперссылку. Первый аргумент — полный URL, второй (необязательный) — текст ссылки.

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

А о том, как правильно работать со ссылками на сайте, вы сможете узнать с помощью статей, вебинаров, курсов по SEO от CyberMarketing.

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

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

К счастью, есть способ вставить Google Таблицы в Документы Google таким образом, чтобы они автоматически обновлялись при изменении данных в Google Таблицах (связанном наборе данных).

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

Вставка диапазона связанных таблиц Google в Документы Google

Предположим, у вас есть набор данных, показанный ниже в Google Таблицах, и вы хотите вставить таблицу в этот лист в Google Документы. И, конечно же, мы хотим, чтобы это было связано, поэтому, если я что-то изменю в таблице, это автоматически изменится в Документах Google.


Ниже приведены шаги по добавлению диапазона таблиц Гугл в Документы Google:

  • Выберите диапазон в Google Таблицах, который вы хотите вставить в Документы Google.
  • Скопируйте его (используйте Control + C или щелкните правой кнопкой мыши, а затем нажмите Копировать)
  • Откройте документ Google Docs, в который вы хотите вставить таблицу.
  • Поместите курсор в то место, где вы хотите получить данные (таблица)
  • Вставьте данные (Control + V или щелкните правой кнопкой мыши, а затем нажмите «Вставить»). Откроется диалоговое окно «Вставить таблицу».
  • Убедитесь, что в диалоговом окне «Вставить таблицу» установлен флажок «Связать с таблицей».
  • Нажмите на Вставить

Вышеупомянутые шаги вставят таблицу Google Sheets в документ Google Документы.

Поскольку эта таблица связана с исходными данными в Google Таблицах, когда вы вносите какие-либо изменения в исходные данные в Гугл Таблицах, вы сможете обновить эту таблицу и отразить изменения в скопированной таблице.

И помните, что данные не обновляются не в режиме реального времени. Вам придется вручную обновить таблицу, нажав кнопку обновления (рассматривается в следующем разделе).

При использовании этой техники вам необходимо знать две вещи:

  • Скопированные данные в Документах Google связаны с исходными данными, но не обновляются в реальном времени. Однако он дает вам возможность обновить данные одним щелчком мыши.
  • Это работает только в том случае, если документы Google Sheets и Google Docs находятся в одной учетной записи (или к ним предоставлен полный доступ). Если вы попытаетесь скопировать данные из Google Таблиц из одной учетной записи в Google Docs из другой учетной записи, диалоговое окно «Вставить таблицу» не отобразится. Он просто вставит его как обычные несвязанные данные.

Обновление данных (одним щелчком мыши)

Когда вы изменяете какие-либо данные в исходном диапазоне в Google Таблицах (которые были скопированы и вставлены в Документы Google), вы увидите возможность обновить таблицу в Документах Google (появляется только при выборе любой ячейки в таблице).


Кнопка «Обновить» появляется только после изменения данных в Google Таблицах. И чтобы применить это изменение и сделать его видимым в Документах Google, вам нужно нажать кнопку «Обновить».

Помимо изменения значения в ячейках, вы также можете перенести форматирование из Google Sheets в Google Docs.

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


Обратите внимание, что, хотя вы можете обновить данные, чтобы отразить цвет ячейки, граница таблицы не связана. Кроме того, вы также можете использовать условное форматирование для данных Google Таблиц, и оно будет отражено в данных в Google Документы (я считаю это супер крутым!).

Обновление данных при добавлении дополнительных строк

Когда вы вставляете данные из Google Таблиц в документ Google, они связываются только с этим конкретным диапазоном.

Например, в нашем примере мы вставили диапазон A1: E7 из Google Таблиц в Google Docs.

Но что, если я добавлю новую строку в набор данных (в конце набора данных или где-то посередине).

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

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

Ниже приведены шаги по изменению связанного диапазона в Google Документах:

  • Щелкните в любом месте таблицы в Документах Google.
  • Щелкните «Параметр связанной таблицы» (значок в правой верхней части таблицы).
  • Нажмите на Изменить диапазон
  • Укажите здесь новый диапазон

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

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

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

Вы также можете изменить диапазон и выбрать именованный диапазон в диалоговом окне «Диапазон связанных ячеек». В нем перечислены все именованные диапазоны, которые есть у вас в связанных Google Таблицах.


Если вы создадите именованный диапазон позже (после добавления данных Google Таблицы в документ Goole Docs), вы всегда можете изменить связанный диапазон. Просто нажмите «Связанная таблица» (значок в верхней правой части таблицы) и нажмите «Изменить диапазон». Он покажет вам именованный диапазон в диалоговом окне.

Отключить данные Google Таблиц

Если вы хотите отключить данные из Google Таблиц (которые теперь находятся в Google документах), вы также можете легко это сделать.

Просто щелкните в любом месте вставленной таблицы, щелкните значок «Параметры связанной таблицы», а затем щелкните «Отменить связь».


Это мгновенно разорвет ссылку, и на странице появится статическая таблица.

Итак, вот способы, которыми вы можете включить ячейки / диапазон Google Таблиц в документ Google Docs.

Скрипты google для автоматизации, создания документов, мини CRM.

суббота, 11 ноября 2017 г.

Генерируем документы в google из шаблона

Порой возникает необходимость заполнения документов данными клиента. Иногда этих документов бывает слишком много. Да и заполнение представляет собой, чаще всего, простую подстановку ФИО в нужном месте документа. Оказывается процесс заполнения документов можно автоматизировать и мало того можно поручить это самому клиенту. Представим себе картину - клиент требует договор и счёт на оплату. А мы ему ссылку на google форму где ему необходимо заполнить данные, которые необходимы (включая адрес электронной почты). Скрипт, запущенный в таблицах с ответами, 'анализирует' полученные ответы, в заранее подготовленный шаблон, вставляет необходимые данные, шаблон преобразует в pdf и отправляет полученный файл на электронную почту клиента и на любой другой. И клиент доволен, и нам время не надо тратить на оформление документов. Шик, блеск, красота. Дело за малым - остаётся создать форму с таблицей, создать шаблон и написать скрипт :) .

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

1. Создаём форму, в которой нам будет интересны только Фамилия Имя Отчество и e-mail клиента. добавляем на странице с ответами два служебных столбца - "id" и "отправлено?"

Здесь DATA, NUMBER, ФИО_КЛИЕНТА - служебные поля, которые будут заменяться на данные клиента.

4. Открываем таблицу и пишем скрипт

Получилось 2 функции: spravka - собственно она и генерирует google документ из шаблона, и getPdf - преобразует google doc в pdf и отправляет на почту заполнившего человека. На функцию spravka ставим триггер на отправку формы, на getPdf ставим триггер на каждую минуту.

Почему функций 2? Какой-то глюк google - пока выполняется spravka, генерация pdf документа не происходит так как надо (не происходит замены полей в документе на данные клиента). Вторая функция обходит ответы, генерирует pdf и отправляет на адрес пользователя, заполнившего форму.


Что сейчас необходимо чтобы получить справку на Ваше имя? Заполнить форму, указав Ваш реальный e-mail.

Буду рад ответить на вопросы.

73 комментария:

Здесь DATA, NUMBER, ФИО_КЛИЕНТА - служебные поля, которые будут заменяться на данные клиента.

Как это реализиовать?

Здравствуйте.
Не совсем понятен вопрос. В скрипте уже всё реализовано.

Здравствуйте!
Использовал ваш урок для попытки создания аналогичного по функционалу решения. Однако у меня не отправляется email, хотя и появляется файл во временной папке, а так же вижу в настройках триггеров выполнение по времени. Не подскажете в чем может быть проблема и куда смотреть.

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

Большое спасибо за оперативную помощь.
По поводу отправки меня интересует отправка в формате googledocs.

Тогда можно не городить огород и формировать документ одной функцией, отправляя на e-mail только ссылку.
В начале, конечно, озаботиться чтобы доступ к каталогу, в который копируется файл, был открыт по ссылке.

Добрый день, Роман!
А вы могли бы настроить под наши нужды ваш скрипт. Все аналогично, только полей больше.
Мы готовы заплатить за настройку. Мой скайп: live:9d4046936d84fc24

Добрый день. У меня создается файл в папке, но при попытке получить его функцией openByID пишет ошибку "Не удалось завершить выполнение за 33,368 сек. Документ недоступен. Повторите попытку позже". В чем может быть причина. Файл с таким ID в папке есть.

Доброго дня.
Даже не представляю какая у Вас может возникать ошибка. Хорошо бы посмотреть на пример таблицы со скриптом.

var FIO = clientData[0][1];
var DOG_NAME = clientData[0][2];
var BREED = clientData[0][3];
var SEX = clientData[0][4];
var BDATE = clientData[0][5];
var PEDIGREE = clientData[0][6];
var TATOO = clientData[0][7];
var LICENCE = clientData[0][8];
var PHONE = clientData[0][9];
var EMAIL = clientData[0][10];

Читайте также: