通过 Google Docs 插件 - Apps 脚本将文件从服务器下载到本地计算机
Download file from a server to local machine via Google Docs Add-on - Apps Script
我需要修改我的 Apps 脚本 Google Docs 附加项目,以将在我们的服务器(需要身份验证)中生成的文件下载到本地计算机。没有找到将该文件直接下载到本地计算机的方法。所以尝试先下载到驱动中,然后将驱动文件下载到本地机器。
我目前已经将该文件下载到 Google 驱动器中,现在正在寻找一种方法将其下载到本地计算机。搜索了使用驱动器 api 的方法。但是还没找到方法
下载的文件格式如下。
.pdf, .epub, .jpg, .png, .zip, .mobi, .indd
找到这个 article,但它仅用于下载文本内容。
这是我的代码,用于从我们的服务器检索文件,将其下载到驱动器。
function downloadOutput(selectedFile){
var mimeType;
var template = new Template();
var documentProperties = PropertiesService.getDocumentProperties();
var jobFolderPath = replaceWhiteSpace(documentProperties.getProperty('JOB_FOLDER_PATH'));
var pathParts = jobFolderPath.split("/");
var outputFolderName = pathParts.pop();
var rootFolderID = getWriterRootFolder();
var filename = replaceWhiteSpace(selectedFile);
if (selectedFile.includes('.pdf')){
mimeType = 'application/pdf';
}
else if(selectedFile.includes('.epub')){
mimeType = 'application/epub+zip';
}
else if (selectedFile.includes('.jpg')){
mimeType = 'image/jpeg';
}
else if(selectedFile.includes('.png')){
mimeType = 'image/png';
}
else if(selectedFile.includes('.zip')){
mimeType= 'application/zip';
}
else if(selectedFile.includes('.mobi')){
mimeType= 'application/x-mobipocket-ebook';
}
else if(selectedFile.includes('.indd')){
mimeType = 'application/x-indesign';
}
//This is for retrieving the selectedFile from our server.
var response = sendRequest(template.server, template.customer, "/api/v2/","GET", "files" + jobFolderPath + "/"+ filename);
var output = {
title: selectedFile,
parents: [{'id':rootFolderID}],
mimeType: mimeType
};
var outputFile = Drive.Files.insert(output, response.getBlob());
//some tries to get a download from the drive file, but not worked.
var url = "https://www.googleapis.com/drive/v3/files/" + outputFile.id + "?alt=media&mimeType="+ mimeType;
var blob = UrlFetchApp.fetch(url, {
method: "get",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
});
var rrr = UrlFetchApp.fetch(outputFile.downloadUrl,
{
method :"get",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken() }
});
}
请提供一种方法,将驱动文件下载到本地计算机的 'Downloads' 文件夹中,或者直接将服务器文件下载到本地计算机而不将其保存在驱动器中。
提前致谢。
只要 Apps Script 是服务器端执行的,就没有直接的方法可以使用它下载到您的机器。
但是,既然您的文件在您的云端硬盘中,那么使用 client libraries for Google APIs, in your case Drive API 之一将其直接下载到您的计算机怎么样?
步骤很简单,找文件,抓取ID,下载到你的机器上。
Google 有您要使用的 Download files, this includes Download a general file from Google Drive and Download Google Workspace Document, and for search for a specific file, via name = my_server_side_generated_file
or mimeType = 'application/epub+zip'
, or whatever query method 的具体指南。
这是在 Node.js 下载文件的简单用例,但您也有 Python 和 Java.
的示例
var fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
var dest = fs.createWriteStream('/tmp/photo.jpg');
drive.files.get({
fileId: fileId,
alt: 'media'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
文档:
我需要修改我的 Apps 脚本 Google Docs 附加项目,以将在我们的服务器(需要身份验证)中生成的文件下载到本地计算机。没有找到将该文件直接下载到本地计算机的方法。所以尝试先下载到驱动中,然后将驱动文件下载到本地机器。
我目前已经将该文件下载到 Google 驱动器中,现在正在寻找一种方法将其下载到本地计算机。搜索了使用驱动器 api 的方法。但是还没找到方法
下载的文件格式如下。
.pdf, .epub, .jpg, .png, .zip, .mobi, .indd
找到这个 article,但它仅用于下载文本内容。
这是我的代码,用于从我们的服务器检索文件,将其下载到驱动器。
function downloadOutput(selectedFile){
var mimeType;
var template = new Template();
var documentProperties = PropertiesService.getDocumentProperties();
var jobFolderPath = replaceWhiteSpace(documentProperties.getProperty('JOB_FOLDER_PATH'));
var pathParts = jobFolderPath.split("/");
var outputFolderName = pathParts.pop();
var rootFolderID = getWriterRootFolder();
var filename = replaceWhiteSpace(selectedFile);
if (selectedFile.includes('.pdf')){
mimeType = 'application/pdf';
}
else if(selectedFile.includes('.epub')){
mimeType = 'application/epub+zip';
}
else if (selectedFile.includes('.jpg')){
mimeType = 'image/jpeg';
}
else if(selectedFile.includes('.png')){
mimeType = 'image/png';
}
else if(selectedFile.includes('.zip')){
mimeType= 'application/zip';
}
else if(selectedFile.includes('.mobi')){
mimeType= 'application/x-mobipocket-ebook';
}
else if(selectedFile.includes('.indd')){
mimeType = 'application/x-indesign';
}
//This is for retrieving the selectedFile from our server.
var response = sendRequest(template.server, template.customer, "/api/v2/","GET", "files" + jobFolderPath + "/"+ filename);
var output = {
title: selectedFile,
parents: [{'id':rootFolderID}],
mimeType: mimeType
};
var outputFile = Drive.Files.insert(output, response.getBlob());
//some tries to get a download from the drive file, but not worked.
var url = "https://www.googleapis.com/drive/v3/files/" + outputFile.id + "?alt=media&mimeType="+ mimeType;
var blob = UrlFetchApp.fetch(url, {
method: "get",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
});
var rrr = UrlFetchApp.fetch(outputFile.downloadUrl,
{
method :"get",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken() }
});
}
请提供一种方法,将驱动文件下载到本地计算机的 'Downloads' 文件夹中,或者直接将服务器文件下载到本地计算机而不将其保存在驱动器中。
提前致谢。
只要 Apps Script 是服务器端执行的,就没有直接的方法可以使用它下载到您的机器。
但是,既然您的文件在您的云端硬盘中,那么使用 client libraries for Google APIs, in your case Drive API 之一将其直接下载到您的计算机怎么样?
步骤很简单,找文件,抓取ID,下载到你的机器上。
Google 有您要使用的 Download files, this includes Download a general file from Google Drive and Download Google Workspace Document, and for search for a specific file, via name = my_server_side_generated_file
or mimeType = 'application/epub+zip'
, or whatever query method 的具体指南。
这是在 Node.js 下载文件的简单用例,但您也有 Python 和 Java.
的示例var fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
var dest = fs.createWriteStream('/tmp/photo.jpg');
drive.files.get({
fileId: fileId,
alt: 'media'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);