Skip to content

Instantly share code, notes, and snippets.

@eojji
Last active June 25, 2018 08:18
Show Gist options
  • Save eojji/6c6c56a7e2b3e13559447274f08d5f71 to your computer and use it in GitHub Desktop.
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
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