Skip to content

Commit 3cf10bd

Browse files
committed
add support to view google drive shortcut
1 parent db6c252 commit 3cf10bd

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

index.js

+19-4
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,15 @@ class googleDrive {
149149
let url = 'https://www.googleapis.com/drive/v3/files';
150150
let params = {'includeItemsFromAllDrives':true,'supportsAllDrives':true};
151151
params.q = `'${parent}' in parents and name = '${name}' andtrashed = false`;
152-
params.fields = "files(id, name, mimeType, size ,createdTime, modifiedTime, iconLink, thumbnailLink)";
152+
params.fields = "files(id, name, mimeType, size ,createdTime, modifiedTime, iconLink, thumbnailLink, shortcutDetails)";
153153
url += '?'+this.enQuery(params);
154154
let requestOption = await this.requestOption();
155155
let response = await fetch(url, requestOption);
156156
let obj = await response.json();
157+
if (obj.files && obj.files[0] && obj.files[0].mimeType == 'application/vnd.google-apps.shortcut'){
158+
obj.files[0].id = obj.files[0].shortcutDetails.targetId;
159+
obj.files[0].mimeType = obj.files[0].shortcutDetails.targetMimeType;
160+
}
157161
console.log(obj);
158162
return obj.files[0];
159163
}
@@ -209,7 +213,7 @@ class googleDrive {
209213
let params = {'includeItemsFromAllDrives':true,'supportsAllDrives':true};
210214
params.q = `'${parent}' in parents and trashed = false AND name !='.password'`;
211215
params.orderBy= 'folder,name,modifiedTime desc';
212-
params.fields = "nextPageToken, files(id, name, mimeType, size , modifiedTime)";
216+
params.fields = "nextPageToken, files(id, name, mimeType, size , modifiedTime, shortcutDetails)";
213217
params.pageSize = 1000;
214218

215219
do {
@@ -221,6 +225,12 @@ class googleDrive {
221225
let requestOption = await this.requestOption();
222226
let response = await fetch(url, requestOption);
223227
obj = await response.json();
228+
obj.files.forEach(file => {
229+
if (file && file.mimeType == 'application/vnd.google-apps.shortcut') {
230+
file.id = file.shortcutDetails.targetId;
231+
file.mimeType = file.shortcutDetails.targetMimeType;
232+
}
233+
});
224234
files.push(...obj.files);
225235
pageToken = obj.nextPageToken;
226236
} while (pageToken);
@@ -262,15 +272,20 @@ class googleDrive {
262272

263273
let url = 'https://www.googleapis.com/drive/v3/files';
264274
let params = {'includeItemsFromAllDrives':true,'supportsAllDrives':true};
265-
params.q = `'${parent}' in parents and mimeType = 'application/vnd.google-apps.folder' and name = '${name}' and trashed = false`;
266-
params.fields = "nextPageToken, files(id, name, mimeType)";
275+
params.q = `'${parent}' in parents and (mimeType = 'application/vnd.google-apps.folder' or mimeType = 'application/vnd.google-apps.shortcut') and name = '${name}' and trashed = false`;
276+
params.fields = "nextPageToken, files(id, name, mimeType, shortcutDetails)";
267277
url += '?'+this.enQuery(params);
268278
let requestOption = await this.requestOption();
269279
let response = await fetch(url, requestOption);
270280
let obj = await response.json();
271281
if(obj.files[0] == undefined){
272282
return null;
273283
}
284+
if (obj.files[0].mimeType == 'application/vnd.google-apps.shortcut' && obj.files[0].shortcutDetails.targetMimeType == 'application/vnd.google-apps.folder') {
285+
obj.files[0].id = obj.files[0].shortcutDetails.targetId;
286+
} else if (obj.files[0].mimeType == 'application/vnd.google-apps.shortcut' && obj.files[0].shortcutDetails.targetMimeType != 'application/vnd.google-apps.folder'){
287+
return null;
288+
}
274289
return obj.files[0].id;
275290
}
276291

0 commit comments

Comments
 (0)