Python 将谷歌工作表转换为PDF格式,并存储在与工作表相同的谷歌驱动器文件夹中
设置 我在一个文件夹中有一个空的Google表单发票模板 我使用Python、Gspread和PyDrive复制模板并用数据填充副本Python 将谷歌工作表转换为PDF格式,并存储在与工作表相同的谷歌驱动器文件夹中,python,google-apps-script,google-sheets,gspread,pydrive,Python,Google Apps Script,Google Sheets,Gspread,Pydrive,设置 我在一个文件夹中有一个空的Google表单发票模板 我使用Python、Gspread和PyDrive复制模板并用数据填充副本 问题 客户需要收到发票的pdf文件,而不是谷歌表单 我遇到了一个地方,说明了如何将本地工作表导出为pdf,即 file_obj = drive.CreateFile({'id': 'sfkldjlfsdkjfgdklj'}) file_obj.GetContentFile('temp.pdf', mimetype='application/pdf') 如何创建
问题 客户需要收到发票的pdf文件,而不是谷歌表单 我遇到了一个地方,说明了如何将本地工作表导出为pdf,即
file_obj = drive.CreateFile({'id': 'sfkldjlfsdkjfgdklj'})
file_obj.GetContentFile('temp.pdf', mimetype='application/pdf')
如何创建google工作表的PDF,而不是本地下载PDF,将其存储在与google工作表相同的google Drive文件夹中?您可以使用驱动器API的Files.export方法,将工作表转换为“application/PDF”mime类型。
在中试用。您可以使用驱动器API的Files.export方法,将工作表转换为“application/pdf”mime类型。 请在中试用。
- 您希望将Google电子表格转换为PDF格式,并在Google电子表格的同一文件夹中创建一个文件
- 在本例中,PDF文件是在Google Drive上创建的
- 您希望使用pydrive和python来实现这一点
- 为了检索电子表格的父文件夹ID,我使用了files.get方法,在驱动器API中使用
请求
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方法
- 这样,脚本将作为所有者运行
- 在这种情况下,请求时不需要访问令牌。我认为作为测试用例,我推荐这种设置
- 当然,您也可以使用访问令牌。此时,请将其设置为“任何人”
https://script.google.com/macros/s/###/exec
。
- 当您修改Google Apps脚本时,请重新部署为新版本。这样,修改后的脚本将反映到Web应用程序中。请注意这一点。
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)
参考资料:
- 您希望将Google电子表格转换为PDF格式,并在Google电子表格的同一文件夹中创建一个文件
- 在本例中,PDF文件是在Google Drive上创建的
- 您希望使用pydrive和python来实现这一点
- 为了检索电子表格的父文件夹ID,我使用了files.get方法,在驱动器API中使用
请求
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)