使用 Javascript 在 google 驱动器中的现有文件夹中创建一个文件夹
creating a folder inside existing folder in google drive using Javascript
我正在使用 asp.net mvc
和 javascript
创建一个应用程序,我想在其中创建现有 google 驱动器文件夹中的文件夹。
下面是我从 Whosebug 获得的代码
function createFolder() {
var body = {
'title': document.getElementById('txtFolderName').value,
'mimeType': "application/vnd.google-apps.folder"
};
var request = gapi.client.drive.files.insert({
'resource': body
});
request.execute(function (resp) {
console.log('Folder ID: ' + resp.id);
});
}
我收到以下错误
index.html:61 Uncaught TypeError: Cannot read properties of undefined
(reading 'files')
下一行
var request = gapi.client.drive.files.insert({
此处 gapi.client.drive
似乎未定义
下面是我用于验证和加载 google api 客户端的代码
function authenticate(callback) {
return gapi.auth2.getAuthInstance()
.signIn({ scope: "https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file" })
.then(function () {
console.log("Sign-in successful");
callback == undefined ? '' : callback();
},
function (err) {
console.error("Error signing in", err);
});
}
function loadClient() {
gapi.client.setApiKey("APIKEY");
return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
.then(function () {
console.log("GAPI client loaded for API");
},
function (err) {
console.error("Error loading GAPI client for API", err);
});
}
这里有什么问题?
如果我想在另一个文件夹中创建一个文件夹,我需要做什么?
提前致谢
我认为在您的脚本中,gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
的 https://docs.googleapis.com/$discovery/rest?version=v1
用于 Google Docs API v1。我认为您的 Uncaught TypeError: Cannot read properties of undefined (reading 'files')
错误消息的原因是由于此。
在您的目标中,您似乎希望将文件夹创建到特定文件夹中。在这种情况下,请使用驱动器 API。但是,当我看到您当前用于创建文件夹的脚本时,使用了 Drive API v2。所以,请修改如下。
发件人:
return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
收件人:
return gapi.client.load("https://www.googleapis.com/discovery/v1/apis/drive/v2/rest")
通过这个修改,我认为你的 createFolder()
有效。但是在您当前的 createFolder()
中,该文件夹被创建到根文件夹。当您想将文件夹创建到特定文件夹时,请修改请求体如下。
var body = {
'title': document.getElementById('txtFolderName').value,
'mimeType': "application/vnd.google-apps.folder",
'parents': [{'id': '###folderId###'}]
};
注:
补充说明,如果要使用Drive API v3,请修改如下。
来自
return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
至
return gapi.client.load("https://www.googleapis.com/discovery/v1/apis/drive/v3/rest")
并且,请修改createFolder()
如下。
var body = {
'name': document.getElementById('txtFolderName').value,
'mimeType': "application/vnd.google-apps.folder",
'parents': ['###folderId###']
};
var request = gapi.client.drive.files.create({ 'resource': body });
参考文献:
我正在使用 asp.net mvc
和 javascript
创建一个应用程序,我想在其中创建现有 google 驱动器文件夹中的文件夹。
下面是我从 Whosebug 获得的代码
function createFolder() {
var body = {
'title': document.getElementById('txtFolderName').value,
'mimeType': "application/vnd.google-apps.folder"
};
var request = gapi.client.drive.files.insert({
'resource': body
});
request.execute(function (resp) {
console.log('Folder ID: ' + resp.id);
});
}
我收到以下错误
index.html:61 Uncaught TypeError: Cannot read properties of undefined (reading 'files')
下一行
var request = gapi.client.drive.files.insert({
此处 gapi.client.drive
似乎未定义
下面是我用于验证和加载 google api 客户端的代码
function authenticate(callback) {
return gapi.auth2.getAuthInstance()
.signIn({ scope: "https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file" })
.then(function () {
console.log("Sign-in successful");
callback == undefined ? '' : callback();
},
function (err) {
console.error("Error signing in", err);
});
}
function loadClient() {
gapi.client.setApiKey("APIKEY");
return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
.then(function () {
console.log("GAPI client loaded for API");
},
function (err) {
console.error("Error loading GAPI client for API", err);
});
}
这里有什么问题?
如果我想在另一个文件夹中创建一个文件夹,我需要做什么?
提前致谢
我认为在您的脚本中,gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
的 https://docs.googleapis.com/$discovery/rest?version=v1
用于 Google Docs API v1。我认为您的 Uncaught TypeError: Cannot read properties of undefined (reading 'files')
错误消息的原因是由于此。
在您的目标中,您似乎希望将文件夹创建到特定文件夹中。在这种情况下,请使用驱动器 API。但是,当我看到您当前用于创建文件夹的脚本时,使用了 Drive API v2。所以,请修改如下。
发件人:
return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
收件人:
return gapi.client.load("https://www.googleapis.com/discovery/v1/apis/drive/v2/rest")
通过这个修改,我认为你的
createFolder()
有效。但是在您当前的createFolder()
中,该文件夹被创建到根文件夹。当您想将文件夹创建到特定文件夹时,请修改请求体如下。var body = { 'title': document.getElementById('txtFolderName').value, 'mimeType': "application/vnd.google-apps.folder", 'parents': [{'id': '###folderId###'}] };
注:
补充说明,如果要使用Drive API v3,请修改如下。
来自
return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
至
return gapi.client.load("https://www.googleapis.com/discovery/v1/apis/drive/v3/rest")
并且,请修改
createFolder()
如下。var body = { 'name': document.getElementById('txtFolderName').value, 'mimeType': "application/vnd.google-apps.folder", 'parents': ['###folderId###'] }; var request = gapi.client.drive.files.create({ 'resource': body });