我正在设置数据抓取器,将数据写入excel文件,然后我想将这些文件上传到我自己的驱动器帐户中的文件夹。这将通过调度程序每天进行一次,因此完全自动化是这里的目标。
我正在查看this快速入门指南,它会经历Oauth2的过程。我不想访问任何其他用户数据,只需按下我创建的文件。这可能是一个愚蠢的问题,但我是否必须通过oAuth过程,而不仅仅是使用api密钥和秘密?
在第4步中它显示The first time you run the sample, it will prompt you to authorize access:
,如果这是在EC2实例上运行,我将如何做到这一点
由于
答案 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驱动器的node.js的服务帐户示例,您可以找到一个用于其他api之一或检查客户端库示例examples
服务帐户不是您的虚拟用户,您可以使用服务帐户电子邮件地址并在您的个人google云端硬盘帐户上与服务帐户共享文件夹或文件,它将具有访问权限。 read more about service accounts