如何将字符串作为文件上传到 Google 云端硬盘?
How do I upload a string as a file to Google Drive?
这是我的问题:
我想创建一个 Google Sheets 扩展,其中我基本上从 Google Sheets 中的 sheet 中提取数据,我使用节点 JS 中的方法对其进行了修改。
然后,有了我在字符串中修改的数据,我想将该字符串上传到客户端的驱动器中,在 csv 或 xml 文件中。因此,我没有可用于上传文件的本地文件,只有一个字符串变量。
我如何上传该字符串?
非常感谢,这是我的第一个应用程序,我有点挣扎。
代码
const {google} = require ('googleapis');
const keys = require ('./keys.json');
const client = new google.auth.JWT(
keys.client_email, null,
keys.private_key,
['googleapis.com/auth/drive'],
'https://www.googleapis.com/…'
);
client.authorize(function(err, tokens){
if (err){
console.log(err);
return
} else {
console.log('Connected');
gsrun(client);
}
});
async function gsrun(cl) {
const gsapi = google.sheets({version: 'v4', auth: cl});
}
您必须设置文件的元数据及其将包含的数据(对于这种情况,MIME 类型必须是 text/csv
很重要)并且文件的正文将是一个简单的字符串。此代码将帮助您考虑到您已经执行了 OAuth 流程并拥有要插入的字符串:
module.exports.init = async function (){
// Before calling the API, build your own Drive service instance
// In the second argument, you must pass your own string message
const pro = await uploadSimpleString(drive, null);
console.log(pro);
}
uploadSimpleString = (drive, message) => {
// Set file metadata and data
message = message || 'This is a simple String nice to meet you';
const fileMetadata = {'name': 'uploadSimpleStringt.csv'};
const media = {
mimeType: 'text/csv',
body: message
};
// Return the Promise result after completing its task
return new Promise((resolve, reject) => {
try{
// Call Files: create endpoint
return drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id'
},(err, results) => {
// Result from the call
if(err) reject(`Drive error: ${err.message}`);
resolve(results);
})
} catch (error){
console.log(`There was a problem in the promise: ${error}`);
}
});
}
通知
要测试此代码,运行 在您的 CLI 中使用此命令:
node -e 'require("./index.js").init()'
其中 index.js
是您的文件名,init()
是您的主要功能。
文档
有关更多信息,请查看这些链接并考虑以这种方式使用 [google-drive-api] 标签,获得帮助的机会更多,因为会有更多人能够找到您的问题。
这是我的问题:
我想创建一个 Google Sheets 扩展,其中我基本上从 Google Sheets 中的 sheet 中提取数据,我使用节点 JS 中的方法对其进行了修改。 然后,有了我在字符串中修改的数据,我想将该字符串上传到客户端的驱动器中,在 csv 或 xml 文件中。因此,我没有可用于上传文件的本地文件,只有一个字符串变量。 我如何上传该字符串? 非常感谢,这是我的第一个应用程序,我有点挣扎。
代码
const {google} = require ('googleapis');
const keys = require ('./keys.json');
const client = new google.auth.JWT(
keys.client_email, null,
keys.private_key,
['googleapis.com/auth/drive'],
'https://www.googleapis.com/…'
);
client.authorize(function(err, tokens){
if (err){
console.log(err);
return
} else {
console.log('Connected');
gsrun(client);
}
});
async function gsrun(cl) {
const gsapi = google.sheets({version: 'v4', auth: cl});
}
您必须设置文件的元数据及其将包含的数据(对于这种情况,MIME 类型必须是 text/csv
很重要)并且文件的正文将是一个简单的字符串。此代码将帮助您考虑到您已经执行了 OAuth 流程并拥有要插入的字符串:
module.exports.init = async function (){
// Before calling the API, build your own Drive service instance
// In the second argument, you must pass your own string message
const pro = await uploadSimpleString(drive, null);
console.log(pro);
}
uploadSimpleString = (drive, message) => {
// Set file metadata and data
message = message || 'This is a simple String nice to meet you';
const fileMetadata = {'name': 'uploadSimpleStringt.csv'};
const media = {
mimeType: 'text/csv',
body: message
};
// Return the Promise result after completing its task
return new Promise((resolve, reject) => {
try{
// Call Files: create endpoint
return drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id'
},(err, results) => {
// Result from the call
if(err) reject(`Drive error: ${err.message}`);
resolve(results);
})
} catch (error){
console.log(`There was a problem in the promise: ${error}`);
}
});
}
通知
要测试此代码,运行 在您的 CLI 中使用此命令:
node -e 'require("./index.js").init()'
其中 index.js
是您的文件名,init()
是您的主要功能。
文档
有关更多信息,请查看这些链接并考虑以这种方式使用 [google-drive-api] 标签,获得帮助的机会更多,因为会有更多人能够找到您的问题。