通过 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);
文档: