- Вы хотите преобразовать электронную таблицу Google в формат PDF и создать ее в виде файла в той же папке электронной таблицы Google.
- В этом случае файл PDF создается на Google Диске .
- Вы хотите добиться этого, используя pydrive с python.
Если мое понимание верно, как насчет этого ответа? Думайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
К сожалению, таблицу Google нельзя напрямую конвертировать и экспортировать в Google Диск с помощью Google API. В этом случае необходимо использовать обходные пути. В этом ответе я хотел бы предложить следующие 2 обходных пути.
Шаблон 1:
В этом шаблоне ваша цель достигается с помощью pydrive. В этом случае электронная таблица загружается в локальный P C в виде файла PDF и загружает файл PDF в ту же папку электронной таблицы на Google Диске.
Пример сценария:
spreadsheet_id = '###' # Please set the Spreadsheet ID.
pdf_filename = 'sample.pdf'
drive = GoogleDrive(gauth)
# Download Spreadsheet as PDF file.
dl_file = drive.CreateFile({'id': spreadsheet_id})
dl_file.GetContentFile(pdf_filename, mimetype='application/pdf')
# Get parent folder ID of the Spreadsheet.
url = 'https://www.googleapis.com/drive/v3/files/' + spreadsheet_id + '?fields=parents'
headers = {'Authorization': 'Bearer ' + drive.auth.credentials.token_response["access_token"]}
res = requests.get(url, headers=headers)
# Upload the PDF file to the same folder of Spreadsheet.
up_file = drive.CreateFile({'parents': [{'id': res.json()['parents'][0]}]})
up_file.SetContentFile(pdf_filename)
up_file.Upload()
print('title: %s, mimeType: %s' % (up_file['title'], up_file['mimeType']))
- Чтобы получить идентификатор родительской папки Spreadsheet, я использовал метод files.get в Drive API, используя
requests
.
Pattern 2:
В этом шаблоне ваша цель достигается с помощью веб-приложений, созданных Google Apps Script. В этом случае с помощью веб-приложений электронная таблица преобразуется в формат PDF и создается файл в той же папке электронной таблицы. Таким образом, процесс может быть запущен только на стороне Google. Сценарий python отправляет только идентификатор электронной таблицы по запросу. Для этого выполните следующий поток:
1. Создайте новый проект скрипта Google Apps.
Пример скрипта веб-приложений - это скрипт Google Apps. Поэтому, пожалуйста, создайте проект Google Apps Script.
Если вы хотите создать его напрямую, перейдите к https://script.new/. В этом случае, если вы не вошли в Google, откроется экран входа. Пожалуйста, войдите в Google. При этом открывается редактор сценариев Google Apps Script.
2. Подготовьте скрипт.
Скопируйте и вставьте следующий скрипт (Google Apps Script) в редактор скриптов. Этот скрипт предназначен для веб-приложений.
function doGet(e) {
var spreadsheetId = e.parameter.id;
var file = DriveApp.getFileById(spreadsheetId);
var blob = file.getBlob();
var folder = file.getParents().next();
var pdfFile = folder.createFile(blob.setName(file.getName() + ".pdf"));
return ContentService.createTextOutput(pdfFile.getId());
}
- В этом случае используется метод GET.
3. Развертывание веб-приложений.
- В редакторе сценариев откройте диалоговое окно с помощью «Publi sh» -> «Развернуть как веб-приложение».
- Выберите «Me " for " Запустите приложение как: ".
- При этом сценарий запускается от имени владельца.
- Выберите "Любой, даже анонимный" для "У кого есть доступ к приложению: ".
- В этом случае токен доступа не требуется запрашивать. Я думаю, что в качестве тестового примера я рекомендую этот параметр.
- Конечно, вы также можете использовать токен доступа. В это время установите "Anyone" .
- Нажмите кнопку "Развернуть" как новую версию проекта.
- Автоматически открывать диалоговое окно «Требуется авторизация».
- Нажмите «Просмотреть разрешения».
- Выберите собственную учетную запись.
- Нажмите «Дополнительно» в разделе «Это приложение не подтверждено».
- Нажмите " Go to ### имя проекта ### (небезопасно) "
- Нажмите кнопку" Разрешить ".
- Нажмите" ОК ".
- Скопируйте URL-адрес веб-приложений. Это как
https://script.google.com/macros/s/###/exec
. - Когда вы изменили скрипт Google Apps, пожалуйста, повторно разверните его как новую версию. Этим измененный сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны.
3. Запустите функцию с помощью веб-приложений.
Это пример сценария python для запроса веб-приложений. Укажите URL-адрес веб-приложения и идентификатор таблицы.
import requests
spreadsheet_id = '###' # Please set the Spreadsheet ID.
url = 'https://script.google.com/macros/s/###/exec?id=' + spreadsheet_id
res = requests.get(url)
print(res.text)
Ссылки:
Если Я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.