使用Google Drive API

时间:2018-02-09 11:19:21

标签: node.js google-api google-drive-api google-api-nodejs-client

我正在设置数据抓取器,将数据写入excel文件,然后我想将这些文件上传到我自己的驱动器帐户中的文件夹。这将通过调度程序每天进行一次,因此完全自动化是这里的目标。

我正在查看this快速入门指南,它会经历Oauth2的过程。我不想访问任何其他用户数据,只需按下我创建的文件。这可能是一个愚蠢的问题,但我是否必须通过oAuth过程,而不仅仅是使用api密钥和秘密?

在第4步中它显示The first time you run the sample, it will prompt you to authorize access:,如果这是在EC2实例上运行,我将如何做到这一点

由于

2 个答案:

答案 0 :(得分:1)

我以为我会发布我是如何工作的(我需要查看文件是否存在,然后更换它,但后来更新),首先@DalmTo和@JoeClay有好点,所以我进一步调查了它们并遇到this blog post

# index.js
const google = require('googleapis');
const fs = require('fs');
const config = require('./creds.json');
const drive = google.drive('v3');
const targetFolderId = "123456789"


const jwtClient = new google.auth.JWT(
  config.client_email,
  null,
  config.private_key,
  ['https://www.googleapis.com/auth/drive'],
  null
);

jwtClient.authorize((authErr) => {
  if (authErr) {
    console.log(authErr);
    return;
  }


const fileMetadata = {
  name: './file.txt,
  parents: [targetFolderId]
};

const media = {
  mimeType: 'application/vnd.ms-excel',
  body: fs.createReadStream('./file.txt' )
};

drive.files.create({
  auth: jwtClient,
  resource: fileMetadata,
  media,
  fields: 'id'
}, (err, file) => {
  if (err) {
    console.log(err);
    return;
  }
    console.log('Uploaded File Id: ', file.data.id);
  });
});

正如我之前所说,我的下一步是检查文件是否存在以及是否确实替换它

答案 1 :(得分:0)

如果您只是要访问自己的帐户,那么您应该查看service account。服务帐户是预先授权的,因此您不会出现要求访问的窗口。我不是node.js程序员所以我对代码帮不了多少。我没有看到针对google驱动器的nod​​e.js的服务帐户示例,您可以找到一个用于其他api之一或检查客户端库示例examples

服务帐户不是您的虚拟用户,您可以使用服务帐户电子邮件地址并在您的个人google云端硬盘帐户上与服务帐户共享文件夹或文件,它将具有访问权限。 read more about service accounts