Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Подскажите, как правильно написать код?

В бота отправляются ключевые значения по пошаговому запросу ( фио и т.д ) которые вставляются в ячейки гугл таблицы, после чего данные значения заменяется в готовом шаблоне word и в итоге в бот выкладывает готовый документ pdf
БотыНаписание кода
Алексей Жук
  ·   · 14,7 K
Да, я зарабатываю на ✺Толоке 👇  · 10 апр 2023  · toloka.yandex.ru/promo
Вам понадобится использовать несколько инструментов для решения данной задачи. Вот примерный список шагов, которые вам нужно выполнить:
  1. Создайте гугл-таблицу и добавьте в нее столбцы для каждого ключевого значения (например, ФИО, адрес, телефон и т.д.).
  2. Создайте шаблон документа в формате Word, используя специальные маркеры (например, {{ФИО}}, {{адрес}}, {{телефон}} и т.д.) для указания мест, где будут вставлены значения из таблицы.
  3. Напишите скрипт на языке Python или JavaScript для автоматизации процесса. Этот скрипт должен использовать API Google Sheets и Google Docs для доступа к таблице и документу.
  4. Напишите код для извлечения ключевых значений из сообщений в боте и добавления их в гугл-таблицу.
  5. Напишите код для замены маркеров в документе Word на соответствующие значения из таблицы.
  6. Используйте библиотеку для преобразования документа Word в PDF (например, LibreOffice) и сохраните полученный PDF-файл.
  7. Отправьте полученный PDF-файл обратно в бота и выложите его для скачивания.
Это лишь общий план, и реализация может отличаться в зависимости от выбранных инструментов и языка программирования. Но надеюсь, что это поможет вам начать работу над вашим проектом.
Конечный скрипт для автоматизации процесса будет зависеть от конкретной структуры таблицы и документа, но вот примерный шаблон на JavaScript, который использует API Google Sheets и Google Docs для доступа к таблице и документу:
const {google} = require('googleapis');
const fs = require('fs');
const readline = require('readline');
const {promisify} = require('util');
const {authenticate} = require('@google-cloud/local-auth');

const SCOPES = ['https://www.googleapis.com/auth/documents', 'https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/spreadsheets'];
const TOKEN_PATH = 'token.json';
const SHEET_ID = '<ваш_ID_таблицы>';
const SHEET_RANGE = '<диапазон_ячеек_в_таблице>';
const DOC_ID = '<ваш_ID_документа>';

async function main() {
  // Авторизация пользователя
  const auth = await authenticate({
    scopes: SCOPES,
    keyfilePath: 'credentials.json',
  });
  google.options({auth});

  // Получение значений из таблицы
  const sheets = google.sheets({version: 'v4'});
  const {data: {values}} = await sheets.spreadsheets.values.get({
    spreadsheetId: SHEET_ID,
    range: SHEET_RANGE,
  });

  // Создание экземпляра документа
  const docs = google.docs({version: 'v1'});
  const {data: doc} = await docs.documents.get({documentId: DOC_ID});

  // Поиск и замена значений в документе
  for (const content of doc.body.content) {
    if (content.paragraph) {
      for (const element of content.paragraph.elements) {
        if (element.textRun && element.textRun.content) {
          let text = element.textRun.content;
          for (let i = 0; i < values.length; i++) {
            const [key, value] = values[i];
            text = text.replace(new RegExp(key, 'g'), value);
          }
          element.textRun.content = text;
        }
      }
    }
  }

  // Сохранение изменений в документе
  await docs.documents.batchUpdate({
    documentId: DOC_ID,
    requestBody: {
      requests: [
        {
          replaceAllText: {
            containsText: {
              text: '{{',
              matchCase: true,
            },
            replaceText: '',
          },
        },
        {
          replaceAllText: {
            containsText: {
              text: '}}',
              matchCase: true,
            },
            replaceText: '',
          },
        },
      ],
    },
  });
}

main().catch(console.error);
Этот скрипт использует googleapis для аутентификации пользователя, получения значений из таблицы и замены значений в документе. Конкретные значения, такие как SHEET_ID, SHEET_RANGE и DOC_ID, должны быть заменены на соответствующие значения из вашей таблицы и документа. В этом примере также предполагается, что в документе используются фигурные скобки ({{ и }}) для обозначения мест, где должны быть вставлены значения из таблицы.
Заработать пару сотен рублей онлайн на Яндекс✺Толока! Регистрируйся.Перейти на toloka.yandex.ru/promo