Last active
June 25, 2018 08:18
-
-
Save eojji/6c6c56a7e2b3e13559447274f08d5f71 to your computer and use it in GitHub Desktop.
Trigger Copy Folder by spreadsheet. Listing folders - 7 https://m.cafe.naver.com/eojji/310
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function triggerAfterByName(functionName, time) { | |
ScriptApp.newTrigger(functionName) | |
.timeBased().after(time).create(); | |
console.log('%s, %s, Time: %s - trigger AfterByName', Session.getEffectiveUser().getEmail(), functionName, time); | |
} | |
function setFolderSSIdProperty(value) { | |
return PropertiesService.getUserProperties().setProperty('FOLDER_SS_ID', value); | |
} | |
function getFolderSSIdProperty() { | |
return PropertiesService.getUserProperties().getProperty('FOLDER_SS_ID'); | |
} | |
function deleteFolderSSIdProperty() { | |
return PropertiesService.getUserProperties().deleteProperty('FOLDER_SS_ID'); | |
} | |
function deleteTriggerByName(name) { | |
var getPropTrigger = PropertiesService.getUserProperties().getProperty('atHour'+name); | |
if (!getPropTrigger) { | |
getPropTrigger = 'x'; | |
} | |
var triggers = ScriptApp.getProjectTriggers(); | |
for (var i = 0; i < triggers.length; i++) { | |
if (triggers[i].getHandlerFunction() == name && triggers[i].getUniqueId() != getPropTrigger) { | |
ScriptApp.deleteTrigger(triggers[i]); | |
} | |
} | |
} | |
// https://developers.google.com/drive/v2/reference/files | |
function getDriveFileById_(id) { | |
var optionalArgs = { | |
supportsTeamDrives : true | |
}; | |
try { | |
return Drive.Files.get(id, optionalArgs); | |
} catch(error) { | |
return error; // error.name, error.message; | |
} | |
} | |
function getSpreadsheetById(ssId) { | |
if (!ssId || ssId < 10) { | |
console.warn('!ssId || ssId.length < 10 - getSpreadsheetById'); | |
return; | |
} | |
try { | |
var resp = getDriveFileById_(ssId); | |
if (resp.id && !resp.labels.trashed) { | |
return SpreadsheetApp.openById(ssId); | |
} | |
} catch(e) { | |
console.warn('Error: %s, %s - DriveApp.getFileById(%s) in getSpreadsheetById', e.name, e.message, ssId); | |
} | |
} | |
function trigCpFolderBySheet_() { | |
var newDate = new Date(); | |
var COPY_START_TIME = newDate.getTime(); | |
// Deletes triggers | |
var thisFunctionName = 'trigCpFolderBySheet_'; | |
deleteTriggerByName(thisFunctionName); | |
var ssId = getFolderSSIdProperty(); | |
if (!ssId || ssId.length < 10) { | |
console.warn('Error getProperty(FOLDER_SS_ID), %s', thisFunctionName); | |
return; | |
} | |
var copyFolderSs = getSpreadsheetById(ssId); | |
if (!copyFolderSs) { | |
console.warn('getSpreadsheetById(%s), at %s', ssId, thisFunctionName); | |
return; | |
} | |
var sheetFolder = copyFolderSs.getSheetByName('folder'); | |
var sheetFiles = copyFolderSs.getSheetByName('files'); | |
var folderRow = sheetFolder.getRange('B1').getValue(); // row to read | |
do { | |
var resp = doCopyFolder_(sheetFolder, folderRow, sheetFiles, COPY_START_TIME); | |
if (resp === '1') { | |
if (!timeCheck(COPY_START_TIME, 120000)) { | |
console.log('timeCheck -> triggerAfter'); | |
triggerAfterByName(thisFunctionName, 1000); // trigger 기동 | |
return; | |
} | |
} | |
} while(resp === '1'); | |
} | |
function myFunction3() { | |
var ssId = '????'; | |
setFolderSSIdProperty(ssId); | |
trigCpFolderBySheet_(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment