documentapp.getactivedocument().getBlob 给出 pdf
documentapp.getactivedocument().getBlob gives pdf
我正在尝试将 google 文档的内容发送到我的后端服务。
在我正在使用的应用程序脚本中
if(host == 'sheets'){
var content = SpreadsheetApp.getActiveSpreadsheet().getBlob();
}else if (host == 'docs') {
var content = DocumentApp.getActiveDocument().getBlob();
}
我获取 blob 并通过有效负载参数在 URLFetchApp.fetch() 中通过多部分表单请求发送它。
但是文档和表格的内容都是 converted/sent 我的 pdf 服务。
有什么方法可以preserve/send google 格式的文件吗?
如果不是 google 格式,那么是 Microsoft office 格式?
此致,
索拉夫
如类似 中所述,此行为是预期的。如果您想获取 Microsoft office 格式的文件内容,
您可以检查以下选项:
(选项 1):从 Advanced Drive Service
导出 URL
示例代码:
function getDocument(){
var host = "docs";
var fileId;
var exportFormat;
if(host == 'sheets'){
fileId = SpreadsheetApp.getActiveSpreadsheet().getId();
exportFormat = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
}else if (host == 'docs') {
fileId = DocumentApp.getActiveDocument().getId();
exportFormat = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}
var url = Drive.Files.get(fileId).exportLinks[exportFormat];
Logger.log(url);
var oauthToken = ScriptApp.getOAuthToken();
var content = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + oauthToken
}
}).getBlob();
Logger.log(content.getContentType());
content.setName("TestFile");
MailApp.sendEmail("email@sample.com", "Test", "Test", {attachments: content});
}
先决条件:
您需要启用 Advanced Drive Service 才能使用 Drive.Files.get() 获取文件的导出 links。此请求将 return 一个 文件资源 ,您可以在其中获取 exportLinks
,可以使用基于 supported export MIME Types[=26= 的密钥进行访问]
它有什么作用?
- 根据主机设置,根据supported export MIME Types
获取文件id和导出格式
- 使用Drive.Files.get()获取文件资源并根据步骤1中设置的导出格式密钥获取导出link。
- 使用UrlFetchApp.fetch(url, params) and get the file's blob using HTTPResponse.getBlob()
输出:
(选项 2):使用模板 url
手动创建导出 URL
示例代码:
function getDocument(){
var host = "docs";
var fileId;
var url;
if(host == 'sheets'){
fileId = SpreadsheetApp.getActiveSpreadsheet().getId();
url = "https://docs.google.com/spreadsheets/export?id="+fileId+"&exportFormat=xlsx"
}else if (host == 'docs') {
fileId = DocumentApp.getActiveDocument().getId();
url = "https://docs.google.com/feeds/download/documents/export/Export?id="+fileId+"&exportFormat=docx";
}
Logger.log(url);
var oauthToken = ScriptApp.getOAuthToken();
var content = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + oauthToken
}
}).getBlob();
Logger.log(content.getContentType());
}
它有什么作用?
- 根据主机集,获取文件 ID 并使用此模板创建导出 link:
EXCEL: https://docs.google.com/spreadsheets/export?id=<fileId>&exportFormat=xlsx
WORD: https://docs.google.com/feeds/download/documents/export/Export?id=<fileId>&exportFormat=docx
- 使用UrlFetchApp.fetch(url, params) and get the file's blob using HTTPResponse.getBlob()
注:
基于 Quotas for Google Services,Url Fetch Call 的 Consumer 和 G Suite 免费版的每日配额为 20,000,而 Google Workspace 帐户的每日配额为 100,000
我正在尝试将 google 文档的内容发送到我的后端服务。
在我正在使用的应用程序脚本中
if(host == 'sheets'){
var content = SpreadsheetApp.getActiveSpreadsheet().getBlob();
}else if (host == 'docs') {
var content = DocumentApp.getActiveDocument().getBlob();
}
我获取 blob 并通过有效负载参数在 URLFetchApp.fetch() 中通过多部分表单请求发送它。
但是文档和表格的内容都是 converted/sent 我的 pdf 服务。
有什么方法可以preserve/send google 格式的文件吗?
如果不是 google 格式,那么是 Microsoft office 格式?
此致,
索拉夫
如类似
(选项 1):从 Advanced Drive Service
导出 URL示例代码:
function getDocument(){
var host = "docs";
var fileId;
var exportFormat;
if(host == 'sheets'){
fileId = SpreadsheetApp.getActiveSpreadsheet().getId();
exportFormat = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
}else if (host == 'docs') {
fileId = DocumentApp.getActiveDocument().getId();
exportFormat = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}
var url = Drive.Files.get(fileId).exportLinks[exportFormat];
Logger.log(url);
var oauthToken = ScriptApp.getOAuthToken();
var content = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + oauthToken
}
}).getBlob();
Logger.log(content.getContentType());
content.setName("TestFile");
MailApp.sendEmail("email@sample.com", "Test", "Test", {attachments: content});
}
先决条件:
您需要启用 Advanced Drive Service 才能使用 Drive.Files.get() 获取文件的导出 links。此请求将 return 一个 文件资源 ,您可以在其中获取 exportLinks
,可以使用基于 supported export MIME Types[=26= 的密钥进行访问]
它有什么作用?
- 根据主机设置,根据supported export MIME Types 获取文件id和导出格式
- 使用Drive.Files.get()获取文件资源并根据步骤1中设置的导出格式密钥获取导出link。
- 使用UrlFetchApp.fetch(url, params) and get the file's blob using HTTPResponse.getBlob()
输出:
(选项 2):使用模板 url
手动创建导出 URL示例代码:
function getDocument(){
var host = "docs";
var fileId;
var url;
if(host == 'sheets'){
fileId = SpreadsheetApp.getActiveSpreadsheet().getId();
url = "https://docs.google.com/spreadsheets/export?id="+fileId+"&exportFormat=xlsx"
}else if (host == 'docs') {
fileId = DocumentApp.getActiveDocument().getId();
url = "https://docs.google.com/feeds/download/documents/export/Export?id="+fileId+"&exportFormat=docx";
}
Logger.log(url);
var oauthToken = ScriptApp.getOAuthToken();
var content = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + oauthToken
}
}).getBlob();
Logger.log(content.getContentType());
}
它有什么作用?
- 根据主机集,获取文件 ID 并使用此模板创建导出 link:
EXCEL: https://docs.google.com/spreadsheets/export?id=<fileId>&exportFormat=xlsx
WORD: https://docs.google.com/feeds/download/documents/export/Export?id=<fileId>&exportFormat=docx
- 使用UrlFetchApp.fetch(url, params) and get the file's blob using HTTPResponse.getBlob()
注:
基于 Quotas for Google Services,Url Fetch Call 的 Consumer 和 G Suite 免费版的每日配额为 20,000,而 Google Workspace 帐户的每日配额为 100,000