Skip to content

Instantly share code, notes, and snippets.

@eojji
Last active June 27, 2018 19:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save eojji/a2a90480c5b1fe20abebd0c4230866ef to your computer and use it in GitHub Desktop.
Save eojji/a2a90480c5b1fe20abebd0c4230866ef to your computer and use it in GitHub Desktop.
// https://m.cafe.naver.com/eojji/302
// unit: msec
function timeCheck(startTime, needTime) {
var nowDate = new Date();
// remain = 6 min - ( now - start )
var remain = 360000 - (nowDate.getTime() - startTime);
if (remain < needTime) {
return false;
} else {
return true;
}
}
function listFilesByPageToken_(folderId, pageToken, startTime) {
var query = '"'+ folderId +'" in parents and trashed = false';
var files, resp;
var data = [];
var fileCont = [];
do {
files = Drive.Files.list({
includeTeamDriveItems : true,
supportsTeamDrives : true,
q: query,
maxResults: 100,
pageToken: pageToken,
});
if (files.items && files.items.length > 0) {
for (var i = 0; i < files.items.length; i++) {
var file = files.items[i];
fileCont = [file.title]; // file.title, file.id, file.mimeType, file.fileSize
fileCont.push(file.id);
fileCont.push(file.mimeType);
if (!file.fileSize) {
fileCont.push(0);
} else {
fileCont.push(file.fileSize);
}
data.push(fileCont);
}
}
pageToken = files.nextPageToken;
} while (pageToken && timeCheck(startTime, 30000)); // needTime: 30 sec
if (data.length > 0) {
var objFiles = {};
objFiles.pageToken = pageToken;
objFiles.files = data;
return objFiles;
}
}
function myFunction() {
console.time('listFilesByPageToken_');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var folderId = '0B_MA3GXgQ1ulZzVxWnE2RHhvX2M';
console.info('Input Folder Id: %s', folderId);
var pageToken;
var nowDate = new Date();
var startTime = nowDate.getTime();
var objFiles = listFilesByPageToken_(folderId, pageToken, startTime);
pageToken = objFiles.pageToken;
var data = objFiles.files;
if (data && data.length > 0) {
sheet.getRange(sheet.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
}
console.timeEnd('listFilesByPageToken_');
}
@eojji
Copy link
Author

eojji commented Jun 19, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment