【发布时间】:2020-06-16 19:01:57
【问题描述】:
我正在尝试使用 javascript 和 google api v3 在我的驱动器的另一个文件夹中创建文件夹的快捷方式,Google 提供的代码是这样的,但它不起作用...实际上,我没有甚至不明白。有人可以帮我吗?:
var fileMetadata = {
'name': 'Project Plan',
'mimeType': 'text/plain'
};
drive.files.create({
'resource': fileMetadata,
'fields': 'id'
}, function (err, file) {
if (err) {
// Handle error
console.error(err);
} else {
console.log('File Id: ' + file.id);
shortcutMetadata = {
'name': 'Shortcut to Project Plan',
'mimeType': 'application/vnd.google-apps.shortcut'
'shortcutDetails': {
'targetId': file.id
}
};
drive.files.create({
'resource': shortcutMetadata,
'fields': 'id,name,mimeType,shortcutDetails'
}, function(err, shortcut) {
if (err) {
// Handle error
console.error(err);
} else {
console.log('Shortcut Id: ' + shortcut.id +
', Name: ' + shortcut.name +
', target Id: ' + shortcut.shortcutDetails.targetId +
', target MIME type: ' + shortcut.shortcutDetails.targetMimeType);
}
}
}
});
创建文件夹结构的迭代过程示例:
function crearIterativo(original,destino){
//listo las carpetas que tengo en el original
gapi.client.drive.files.list({
'pageSize': 300,
'q': "mimeType = 'application/vnd.google-apps.folder' and trashed = false and '"+original+"' in parents ",
'fields': "nextPageToken, files(id, name, parents)"
}).then(function(response) {
var files = response.result.files;
if (files && files.length > 0) {
for (var i = 0; i < files.length; i++) { //Para cada carpeta encontrada, la creo en destino:
var file = files[i];
//informo
appendPre(file.name + ' (' + file.id + ')' + ' ['+file.parents +']');
arrayFoldOrig[file.name]=file.id;
//creo carpeta
var fileMetadata = {
'name' : file.name,
'mimeType' : 'application/vnd.google-apps.folder',
'parents': [destino]
};
gapi.client.drive.files.create({
resource: fileMetadata,
}).then(function(respons) {
switch(respons.status){
case 200://si va bien, entonces crea estructura
var file2 = respons.result;
console.log('Created Folder Id: ', file2.id);
console.log('Llamo iterativo: ', file2.id);
crearIterativo(arrayFoldOrig[file2.name],file2.id);
break;
default:
console.log('Error creating the folder, '+response);
break;
}
});
//
}
} else {
//appendPre('No files found.');
}
});
}
【问题讨论】:
-
我可以问你关于你的问题吗? 1. 可以问一下
it doesn't work...actually的详细信息吗? 2.在你的脚本中,drive.files.create中的drive可以用来创建快捷方式吗?即你的授权脚本已经可以使用了? 3. 我能问你剧本的语言吗?是 Javascript 还是 Node.js? -
也许我应该首先回答最后一个问题:我正在使用 javascript,并且提供的代码适用于 Node.js,所以我进行了调整,但它仍然不起作用,它没有'不创建快捷方式既不记录错误。关于许可,是的,我在复制文件夹和创建新文件夹方面做得很好。但是我的主要问题是我看不懂代码,而且关于它的信息很少,所以我无法追踪错误。
-
感谢您的回复。我想确认您的问题以正确理解它。在您的问题中, 1. 您想将 Node.js 的脚本转换为 Javascript。 2. 您已经完成了授权使用 API 和 Javascript 的范围的脚本。我的理解正确吗?
-
正确,我在帖子中添加了一个示例,说明我使用 API 使用迭代过程复制文件夹结构的方式。它比创建快捷方式复杂得多,而且效果很好!总而言之,我需要知道如何为快捷方式正确设置元数据...
-
感谢您的回复。从您的回复中,我提出了修改点作为答案。你能确认一下吗?如果我误解了您的问题并且这不是您期望的方向,我深表歉意。
标签: javascript api shortcut drive