@@ -149,11 +149,15 @@ class googleDrive {
149
149
let url = 'https://www.googleapis.com/drive/v3/files' ;
150
150
let params = { 'includeItemsFromAllDrives' :true , 'supportsAllDrives' :true } ;
151
151
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 )" ;
153
153
url += '?' + this . enQuery ( params ) ;
154
154
let requestOption = await this . requestOption ( ) ;
155
155
let response = await fetch ( url , requestOption ) ;
156
156
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
+ }
157
161
console . log ( obj ) ;
158
162
return obj . files [ 0 ] ;
159
163
}
@@ -209,7 +213,7 @@ class googleDrive {
209
213
let params = { 'includeItemsFromAllDrives' :true , 'supportsAllDrives' :true } ;
210
214
params . q = `'${ parent } ' in parents and trashed = false AND name !='.password'` ;
211
215
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 )" ;
213
217
params . pageSize = 1000 ;
214
218
215
219
do {
@@ -221,6 +225,12 @@ class googleDrive {
221
225
let requestOption = await this . requestOption ( ) ;
222
226
let response = await fetch ( url , requestOption ) ;
223
227
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
+ } ) ;
224
234
files . push ( ...obj . files ) ;
225
235
pageToken = obj . nextPageToken ;
226
236
} while ( pageToken ) ;
@@ -262,15 +272,20 @@ class googleDrive {
262
272
263
273
let url = 'https://www.googleapis.com/drive/v3/files' ;
264
274
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 )" ;
267
277
url += '?' + this . enQuery ( params ) ;
268
278
let requestOption = await this . requestOption ( ) ;
269
279
let response = await fetch ( url , requestOption ) ;
270
280
let obj = await response . json ( ) ;
271
281
if ( obj . files [ 0 ] == undefined ) {
272
282
return null ;
273
283
}
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
+ }
274
289
return obj . files [ 0 ] . id ;
275
290
}
276
291
0 commit comments