Попытка создать соединение с API Google Drive v3 с помощью JavaScript SDK.
По сути, конечная цель, которую я хочу достичь, - получить доступ к различным файлам с google-диска и добавить метаданные (но пока не очень далеко).
Пробежался по учебнику на руководствах по google drive (https://developers.google.com/drive/api/v3/quickstart/js), который отлично работает, и я могу авторизоваться для доступа к файлам и т. Д.
То, с чем я борюсь, это попытаться очистить код, чтобы я не повторял себя снова и снова.
Я использовал GDrive Python SDK, и я могу использовать это прекрасно, но я действительно борюсь с JavaScript SDK, возможно, мне просто нужна проверка реальности, поскольку я пытаюсь привнести аспекты Python в JavaScript?
Таким образом, приведенный ниже код просматривает каждую страницу результатов поиска и находит все файлы в моем gDrive с расширением ZIP, RAR или TAR, а затем вставляет результаты в HTML-код (основываясь на примере Google Drive):
function listFiles() {
gapi.client.load('drive', 'v3', function () {
gapi.client.init({}
).then(function () {
gapi.client.drive.files.list({
'q': "fileExtension = 'zip' or fileExtension = 'rar' or fileExtension = 'tar'",
'pageSize': 10,
'fields': "nextPageToken, files(id, name)",
}).then(function (respo) {
var token = respo.result.nextPageToken;
gapi.client.drive.files.list({
'q': "fileExtension = 'zip' or fileExtension = 'rar' or fileExtension = 'tar'",
'fields': "nextPageToken, files(id, name)",
'pageToken': token
}).then(function (result) {
appendPre('Files:');
console.log(result);
var files = result.result.files;
if (files && files.length > 0) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
console.log(files[i]);
arr.push(files[i]);
appendPre(file.name + ' (' + file.id + ')');
}
} else {
appendPre('No files found.');
}
})
});
});
});
}
Это работает, но как мне его почистить? Создание функций для примера? Возможно, мне потребуется регулярно запрашивать этот список файлов, поэтому я попытался создать функцию:
function getFiles() {gapi.client.load('drive', 'v3', function () {
gapi.client.init({}
).then(function () {
gapi.client.drive.files.list({
'q': "fileExtension = 'zip' or fileExtension = 'rar' or fileExtension = 'tar'",
'pageSize': 10,
'fields': "nextPageToken, files(id, name)",
}).then(function (respo) {
var token = respo.result.nextPageToken;
gapi.client.drive.files.list({
'q': "fileExtension = 'zip' or fileExtension = 'rar' or fileExtension = 'tar'",
'fields': "nextPageToken, files(id, name)",
'pageToken': token
})
})
})
});
}
но когда я звоню, я просто получаю 'undefined'
Затем я где-то прочитал, что могу создать его как переменную и вызвать его с «.then», как я это делал в полном примере.
Но это дает 'undefined' при вызове переменной и при выполнении '.then':
getFiles.then (function (respo) {console.log (respo)})
Невозможно получить свойство 'then' с неопределенной или нулевой ссылкой
Что я делаю не так? Очевидно, что-то, возможно, что-то действительно глупое = [
Любая помощь будет принята с благодарностью =]