SHOW:
|
|
- or go back to the newest paste.
| 1 | /* | |
| 2 | Doc creator script : it allows to create a doc every working day by copying a chosen template. All copies are renamed with the date appended to the template name and are in the same original folder. | |
| 3 | - | UserProperties version to allow multiUser on one single deplOyed version |
| 3 | + | V2 with mail notification & popups + recursive folder display - Using getFilesByType(DocsList.FileType.DOCUMENT) to try speeding up the app launch... |
| 4 | Added the possibility to see the current process (triggers HAVE to be created with this version where the names are stored along with triggers ID) | |
| 5 | - | Doc creator script : it allows to create a doc every working day by copying a chosen template. All copies are renamed with the date and are in the same original folder. |
| 5 | + | Added ability to test create on weekend !! |
| 6 | - | Serge Gabet aka serge Insas september-10-2013 **Google Apps Script** |
| 6 | + | UserProperties version to allow multiUser on one single deployed version |
| 7 | Serge Gabet aka serge Insas september-12-2013 **Google Apps Script** | |
| 8 | */ | |
| 9 | ||
| 10 | - | var btnAttributes = {'padding':'3px','font-family':"Arial, sans-serif",'fontSize':'10pt','border-radius':'4px'}
|
| 10 | + | |
| 11 | var popAttributes = {'padding':'10px','font-family':"Arial, sans-serif",'fontSize':'14pt','color':'#000099','background':'#ffffee','border-radius':'10px'}
| |
| 12 | var btnAttributes = {'padding':'6px','font-family':"Arial, sans-serif",'fontSize':'10pt','border-radius':'6px'}
| |
| 13 | ||
| 14 | - | var folderlist = new Array(); |
| 14 | + | |
| 15 | - | var folders=DocsList.getFolders() |
| 15 | + | var folderlist = [] |
| 16 | - | for(var ff=0;ff<folders.length;++ff){
|
| 16 | + | var allFolders = listFolders(); |
| 17 | - | folderlist.push(folders[ff].getName()); |
| 17 | + | for(var ff=1;ff<allFolders.length;++ff){
|
| 18 | Logger.log(allFolders[ff][1]); | |
| 19 | var folder = DocsList.getFolder(allFolders[ff][1]); | |
| 20 | - | var Apanel = app.createAbsolutePanel().setSize('100%', '100%').setStyleAttribute('background', 'dedeff')
|
| 20 | + | try{
|
| 21 | Logger.log('editors : '+folder.getEditors());// check if you have edit rights on this folder, if not > don't show in the list
| |
| 22 | folderlist.push(allFolders[ff][1]+' ('+allFolders[ff][3]+' docs)');
| |
| 23 | - | var Flist= app.createListBox(false).setName("Flb").setId("Flb").setVisibleItemCount(12).setWidth("180");
|
| 23 | + | }catch(err){}
|
| 24 | - | var Dlist= app.createListBox(false).setName("Dlb").setId("Dlb").setVisibleItemCount(12).setWidth("280");
|
| 24 | + | |
| 25 | var app = UiApp.createApplication().setTitle("AutoDocCreator");
| |
| 26 | var Apanel = app.createScrollPanel().setSize('100%', '100%').setStyleAttribute('background', 'f5f5ff');
| |
| 27 | - | var Flab=app.createLabel('Folder List').setWidth("80");
|
| 27 | + | |
| 28 | - | var Dlab=app.createLabel('Document List').setWidth("100");
|
| 28 | + | |
| 29 | var Flist= app.createListBox(false).setName("Flb").setId("Flb").setVisibleItemCount(12).setWidth("280");
| |
| 30 | - | Flist.addItem('Choose a folder').addItem('Root content');
|
| 30 | + | var Dlist= app.createListBox(false).setName("Dlb").setId("Dlb").setVisibleItemCount(12).setWidth("350");
|
| 31 | var queryL = app.createLabel('Search in folder :');
| |
| 32 | var query = app.createTextBox().setName('query').setId('query');
| |
| 33 | var Flab=app.createLabel('Folder List (with edit rights)').setWidth("280");
| |
| 34 | var Dlab=app.createLabel('Document List (text document only)').setWidth("350");
| |
| 35 | Flist.addItem('Choose a folder').addItem('My Drive');
| |
| 36 | for(ff=0;ff<folderlist.length;++ff){
| |
| 37 | Flist.addItem(folderlist[ff]); | |
| 38 | - | var chosen = app.createButton('Create a timer trigger for every day<br>at 00:00 from Monday to Friday').setId('chosen').setVisible(false).setStyleAttributes(btnAttributes).addClickHandler(waitHandler);
|
| 38 | + | |
| 39 | - | var cpanel = app.createVerticalPanel().add(choose).add(chosen); |
| 39 | + | |
| 40 | var docname = app.createLabel().setId('doc');
| |
| 41 | var link = app.createAnchor('open ', 'href').setId("link").setVisible(false);
| |
| 42 | - | var grid = app.createGrid(5,3); |
| 42 | + | |
| 43 | var chosen = app.createButton('Create a timer trigger for every day<br>at 00:00 from Monday to Friday').setId('chosen').setVisible(false).setStyleAttributes(btnAttributes).addClickHandler(waitHandler);
| |
| 44 | var testCreateHandler = app.createServerHandler('testCreateDocument').addCallbackElement(panel);
| |
| 45 | var testCreate = app.createButton('Test create<br>the document',testCreateHandler).setId('testCreate').setVisible(false).setStyleAttributes(btnAttributes).addClickHandler(waitHandler);
| |
| 46 | var seeHandler = app.createServerHandler('seeTrig');
| |
| 47 | var killHandler = app.createServerHandler('killTrig');
| |
| 48 | var seeTrig = app.createButton('See all current processes', seeHandler).setStyleAttributes(btnAttributes).setId('see').addClickHandler(waitHandler);
| |
| 49 | var kill = app.createButton('Kill all current processes', killHandler).setStyleAttributes(btnAttributes).setId('kill').addClickHandler(waitHandler);
| |
| 50 | var mailCheck = app.createCheckBox('send mail on doc creation').setId('mailCheck').setName('mailCheck').setVisible(false);
| |
| 51 | - | .setWidget(4,1,cpanel) |
| 51 | + | if(UserProperties.getProperty('mailCheck')=='true'){mailCheck.setValue(true)};
|
| 52 | - | .setWidget(4,0,kill) |
| 52 | + | var grid = app.createGrid(8,3); |
| 53 | - | .setWidget(4,2,wait) |
| 53 | + | |
| 54 | .setWidget(1,0,Flist) | |
| 55 | .setWidget(0,1,Dlab) | |
| 56 | - | // |
| 56 | + | |
| 57 | .setWidget(2,0,queryL) | |
| 58 | .setWidget(3,0,query) | |
| 59 | .setWidget(2,1,docname) | |
| 60 | .setWidget(3,1,link) | |
| 61 | .setWidget(4,0,seeTrig) | |
| 62 | .setWidget(5,0,kill) | |
| 63 | .setWidget(5,1,choose) | |
| 64 | .setWidget(6,1,chosen) | |
| 65 | .setWidget(7,1,testCreate) | |
| 66 | .setWidget(6,0,mailCheck) | |
| 67 | - | query.addKeyUpHandler(queryHandler) |
| 67 | + | .setWidget(7,0,wait); |
| 68 | Apanel.add(panel.add(grid)); | |
| 69 | ||
| 70 | var clihandler = app.createClientHandler() | |
| 71 | .forTargets(choose).setVisible(true) | |
| 72 | .forEventSource().setVisible(false); | |
| 73 | choose.addClickHandler(clihandler); | |
| 74 | ||
| 75 | - | choose.addClickHandler(createTrigHandler) |
| 75 | + | |
| 76 | - | chosen.addClickHandler(createTrigHandler) |
| 76 | + | |
| 77 | FHandler.addCallbackElement(panel); | |
| 78 | ||
| 79 | var queryHandler = app.createServerHandler("setTemplate");
| |
| 80 | - | return app ; } |
| 80 | + | query.addKeyUpHandler(queryHandler); |
| 81 | queryHandler.addCallbackElement(panel); | |
| 82 | ||
| 83 | var DHandler = app.createServerHandler("showlab");
| |
| 84 | Dlist.addChangeHandler(DHandler).addClickHandler(waitHandler); | |
| 85 | DHandler.addCallbackElement(panel); | |
| 86 | ||
| 87 | var createTrigHandler = app.createServerHandler("createTrigger");
| |
| 88 | choose.addClickHandler(createTrigHandler); | |
| 89 | chosen.addClickHandler(createTrigHandler); | |
| 90 | createTrigHandler.addCallbackElement(panel); | |
| 91 | ||
| 92 | app.add(Apanel); | |
| 93 | - | var queryBox =app.getElementById('query')
|
| 93 | + | return app; |
| 94 | } | |
| 95 | ||
| 96 | - | var folderName = e.parameter.Flb; |
| 96 | + | function listFolders() {
|
| 97 | - | if(e.parameter.source=='query'){queryBox.setText(e.parameter.query)}
|
| 97 | + | var topFolder = DocsList.getRootFolder() ; // start point |
| 98 | var foldersArray = []; | |
| 99 | foldersArray = getFolders(topFolder.getName().replace('Root','MyDrive'),topFolder,foldersArray);
| |
| 100 | return foldersArray; | |
| 101 | - | if (folderName!='Root content'&&query!=''){
|
| 101 | + | |
| 102 | - | doclist = DocsList.getFolder(folderName).getFiles(0,2000) |
| 102 | + | |
| 103 | function getFolders(path, container,arrayin) {
| |
| 104 | var folders = container.getFolders(0, 300); | |
| 105 | var folderCount = folders.length; | |
| 106 | - | } else if (folderName!='Root content'&&query==''){
|
| 106 | + | var docCount = container.getFilesByType(DocsList.FileType.DOCUMENT).length; |
| 107 | - | doclist = DocsList.getFolder(folderName).getFiles(0,2000) |
| 107 | + | if(path=='MyDrive'){arrayin.push(['https://drive.google.com/?hl=fr&tab=wo#my-drive',path,folderCount])}
|
| 108 | else{arrayin.push([container.getUrl(),path.replace('MyDrive/',''),folderCount,docCount])}
| |
| 109 | for (var i=0;i<folders.length;i++) {
| |
| 110 | var thisFolder = folders[i].getName(); | |
| 111 | - | } else if (folderName=='Root content'&&query!=''){
|
| 111 | + | var thisPath = path+"/"+thisFolder; |
| 112 | - | doclist = DocsList.getRootFolder().getFiles(0,2000) |
| 112 | + | getFolders(thisPath,folders[i],arrayin) |
| 113 | } | |
| 114 | return arrayin; | |
| 115 | } | |
| 116 | - | } else if (folderName=='Root content'&&query==''){
|
| 116 | + | |
| 117 | - | doclist = DocsList.getRootFolder().getFiles(0,2000) |
| 117 | + | |
| 118 | var app = UiApp.getActiveApplication(); | |
| 119 | var wait = app.getElementById('wait').setVisible(false);
| |
| 120 | var choose = app.getElementById("choose").setVisible(false);
| |
| 121 | var chosen = app.getElementById("chosen").setVisible(false);
| |
| 122 | - | if(names.length==0){queryBox.setStyleAttribute('background','#ffaaaa')}else{queryBox.setStyleAttribute('background','#ffffff')}
|
| 122 | + | var testCreate = app.getElementById("testCreate").setVisible(false);
|
| 123 | var Dlist = app.getElementById("Dlb");
| |
| 124 | var doclist=new Array(); | |
| 125 | var label = app.getElementById('doc');
| |
| 126 | var names = new Array(); | |
| 127 | var queryBox =app.getElementById('query');
| |
| 128 | - | UserProperties.setProperty('docInfos',names.toString());
|
| 128 | + | |
| 129 | var doclist = new Array(); | |
| 130 | - | return app ;// update UI |
| 130 | + | var folderName = e.parameter.Flb.substring(0,e.parameter.Flb.indexOf(' ('));// rip of the content counter ( xx docs)
|
| 131 | if(e.parameter.source=='query'){queryBox.setText(e.parameter.query)};
| |
| 132 | if (folderName=='Choose a folder'){Dlist.clear();label.setText(" ");return app}
| |
| 133 | if (folderName!='My Drive'&&query!=''){
| |
| 134 | doclist = DocsList.getFolder(folderName).getFilesByType(DocsList.FileType.DOCUMENT); | |
| 135 | for (nn=0;nn<doclist.length;++nn){
| |
| 136 | if(doclist[nn].getName().toLowerCase().match(query)==query){names.push([doclist[nn].getName(),doclist[nn].getId(),doclist[nn].getType()])}
| |
| 137 | } | |
| 138 | } else if (folderName!='My Drive'&&query==''){
| |
| 139 | doclist = DocsList.getFolder(folderName).getFilesByType(DocsList.FileType.DOCUMENT) | |
| 140 | for (nn=0;nn<doclist.length;++nn){
| |
| 141 | - | var docInfos = UserProperties.getProperty('docInfos').split(',');
|
| 141 | + | |
| 142 | } | |
| 143 | } else if (folderName=='My Drive'&&query!=''){
| |
| 144 | doclist = DocsList.getRootFolder().getFilesByType(DocsList.FileType.DOCUMENT) | |
| 145 | for (nn=0;nn<doclist.length;++nn){
| |
| 146 | - | var doctype = docInfos[docindex*3+2] |
| 146 | + | if(doclist[nn].getName().toLowerCase().match(query)==query){names.push([doclist[nn].getName(),doclist[nn].getId(),doclist[nn].getType()])};
|
| 147 | } | |
| 148 | } else if (folderName=='My Drive'&&query==''){
| |
| 149 | doclist = DocsList.getRootFolder().getFilesByType(DocsList.FileType.DOCUMENT); | |
| 150 | for (nn=0;nn<doclist.length;++nn){
| |
| 151 | names.push([doclist[nn].getName(),doclist[nn].getId(),doclist[nn].getType()]); | |
| 152 | } | |
| 153 | - | var doclink = urlstring+docInfos[docindex*3+1]+poststring; |
| 153 | + | |
| 154 | if(names.length==0){queryBox.setStyleAttribute('background','#ffaaaa')}else{queryBox.setStyleAttribute('background','#ffffff')};
| |
| 155 | names.sort(); | |
| 156 | - | var IDs = docInfos[docindex*3+1]+"|"+doctype; |
| 156 | + | |
| 157 | for(dd=0;dd<names.length;++dd){
| |
| 158 | Dlist.addItem(names[dd][0]+" (doc Nr:"+dd+")"); | |
| 159 | - | return app ;// update UI |
| 159 | + | |
| 160 | Logger.log(names.length); | |
| 161 | var html = app.createHTML('Only the 100 first items in '+folderName+' are shown<br>Use a folder to limit ').setStyleAttributes(popAttributes);
| |
| 162 | var pop = app.createPopupPanel(true).setPopupPosition(150,280).add(html).setPixelSize(400,65).setStyleAttributes(popAttributes); | |
| 163 | Logger.log(names.length); | |
| 164 | if(names.length>100){names=names.splice(names.length-100) ; pop.show()};
| |
| 165 | Logger.log(names.length); | |
| 166 | UserProperties.setProperty('docInfos',Utilities.jsonStringify(names));
| |
| 167 | UserProperties.setProperty('folderName',folderName);
| |
| 168 | return app; | |
| 169 | } | |
| 170 | ||
| 171 | ||
| 172 | function showlab(e){
| |
| 173 | var app = UiApp.getActiveApplication(); | |
| 174 | var wait = app.getElementById('wait').setVisible(false);
| |
| 175 | var label = app.getElementById('doc');
| |
| 176 | var link = app.getElementById('link');
| |
| 177 | var choose = app.getElementById("choose").setVisible(false);
| |
| 178 | var chosen = app.getElementById("chosen").setVisible(false).setEnabled(true);
| |
| 179 | var testCreate = app.getElementById("testCreate").setVisible(false).setEnabled(true);
| |
| 180 | - | '<br>(document name = <b>'+docN+'+ date</b>)<br>Use the button below to start the process'); |
| 180 | + | var docInfos = Utilities.jsonParse(UserProperties.getProperty('docInfos'));
|
| 181 | if (e.parameter.Dlb!=""){
| |
| 182 | var docname = e.parameter.Dlb | |
| 183 | var docN = docname.substr(0,docname.lastIndexOf("("));
| |
| 184 | var docindex = docname.substring(Number(docname.lastIndexOf(":"))+1,Number(docname.lastIndexOf(")")));
| |
| 185 | var doctype = docInfos[docindex][2]; | |
| 186 | label.setText(doctype+" : "+docN).setEnabled(false).setStyleAttribute('fontSize', '15');
| |
| 187 | if (doctype=='document'){var urlstring = "https://docs.google.com/document/d/";var poststring = "/edit"}
| |
| 188 | if (doctype=='spreadsheet'){var urlstring = "https://docs.google.com/spreadsheet/ccc?key=";var poststring = "#gid=0"}
| |
| 189 | if (doctype=='photo'){var urlstring = "https://docs.google.com/file/d/";var poststring = "/edit"}
| |
| 190 | if (doctype=='blob_item'){var urlstring = "https://docs.google.com/file/d/";var poststring = "/edit"}
| |
| 191 | if (doctype=='item'){var urlstring = "https://docs.google.com/file/d/";var poststring = "/edit"}
| |
| 192 | var doclink = urlstring+docInfos[docindex][1]+poststring; | |
| 193 | - | if (triggers[i].getUniqueId() == Existingtriggers[n]) {
|
| 193 | + | |
| 194 | if(doctype=='document'){choose.setVisible(true)}else{choose.setVisible(false)};
| |
| 195 | - | Logger.log('deleted');
|
| 195 | + | var IDs = docInfos[docindex][1]+"|"+doctype; |
| 196 | UserProperties.setProperty('IDs',IDs);
| |
| 197 | } | |
| 198 | return app; | |
| 199 | } | |
| 200 | ||
| 201 | ||
| 202 | - | var html = app.createHTML('All triggers have been deleted, no document will be created anymore').setStyleAttributes(popAttributes)
|
| 202 | + | |
| 203 | - | var pop = app.createPopupPanel(true,true).setPopupPosition(150,300).add(html).setPixelSize(400,40); |
| 203 | + | |
| 204 | var wait = app.getElementById('wait').setVisible(false);
| |
| 205 | var panel = app.getElementById('panel');
| |
| 206 | var kill = app.getElementById('kill').setVisible(false);
| |
| 207 | var IDs = UserProperties.getProperty('IDs');
| |
| 208 | var chosen = app.getElementById("chosen").setVisible(true);
| |
| 209 | var testCreate = app.getElementById("testCreate").setVisible(true);
| |
| 210 | var emailCheckHandler = app.createServerHandler('mailOption').addCallbackElement(panel);
| |
| 211 | var mailCheck = app.getElementById('mailCheck').setVisible(true).addClickHandler(emailCheckHandler);
| |
| 212 | if (e.parameter.source=='choose'){return app};
| |
| 213 | var ID = IDs.substring(0,Number(IDs.lastIndexOf("|")));
| |
| 214 | var doctype = IDs.substr(Number(IDs.lastIndexOf("|"))+1);
| |
| 215 | var docname = e.parameter.Dlb | |
| 216 | - | +')<br>To stop this process simply re-run this application and choose the "kill all processes" option').setStyleAttributes(popAttributes) |
| 216 | + | |
| 217 | - | var pop = app.createPopupPanel(true,true).setPopupPosition(150,300).add(html).setPixelSize(400,200); |
| 217 | + | |
| 218 | UserProperties.setProperty('docID',ID);
| |
| 219 | var makeTrigger = app.createServerHandler('makeTrig').addCallbackElement(panel);
| |
| 220 | - | if(UserProperties.getProperties().toString().match('triggers')=='triggers'){
|
| 220 | + | |
| 221 | var msg = app.createHTML('This document will be used as a template to create a new document every working day at 0 AM.'+
| |
| 222 | '<br>(document name = <b>'+docN+'+ date</b>)<br>Use the button below to start the process<br>and (un)check the email option as desired'); | |
| 223 | var disableHandler = app.createClientHandler().forEventSource().setEnabled(false); | |
| 224 | var startProcess = app.createButton('Start process',makeTrigger).addClickHandler(disableHandler).setStyleAttributes(btnAttributes);
| |
| 225 | - | triggers.push(triggerID) |
| 225 | + | |
| 226 | Logger.log('createTrigger');
| |
| 227 | - | return app |
| 227 | + | |
| 228 | } | |
| 229 | ||
| 230 | - | function createDocument(){
|
| 230 | + | function mailOption(e){
|
| 231 | - | var today = new Date().getDay(); |
| 231 | + | |
| 232 | var mailCheck = e.parameter.mailCheck=='true'; | |
| 233 | UserProperties.setProperty('mailCheck',mailCheck);
| |
| 234 | var html = app.createHTML().setStyleAttributes(popAttributes) | |
| 235 | if(mailCheck){html.setHTML('A new mail will be sent on every working day around midnight with links to the 6 most recent documents created by this application.')}else{
| |
| 236 | - | var newDoc = DocsList.getFileById(docID).makeCopy(docName+Utilities.formatDate(new Date(),'EST','yyyy-MMM-dd')); |
| 236 | + | html.setHTML('No email will be sent')}
|
| 237 | - | if(folderName!='Root content'){
|
| 237 | + | var pop = app.createPopupPanel(true).setPopupPosition(150,300).add(html).setPixelSize(250,110).setStyleAttributes(popAttributes); |
| 238 | - | newDoc.addToFolder(DocsList.getFolder(folderName)); |
| 238 | + | |
| 239 | - | newDoc.removeFromFolder(DocsList.getRootFolder()); |
| 239 | + | |
| 240 | } | |
| 241 | ||
| 242 | - | //eof 09-10_2013 |
| 242 | + | function seeTrig(e){
|
| 243 | if(!UserProperties.getProperty('triggers')){ UserProperties.setProperty('triggers','')};
| |
| 244 | var Existingtriggers = UserProperties.getProperty('triggers').split(',');
| |
| 245 | var htmlString = '<b>Document names used as template:</b><br>' | |
| 246 | for(var n=1;n<Existingtriggers.length;++n){
| |
| 247 | htmlString+='- '+Existingtriggers[n].split('|')[1]+'<br>';
| |
| 248 | } | |
| 249 | var app = UiApp.getActiveApplication(); | |
| 250 | var wait = app.getElementById('wait').setVisible(false);
| |
| 251 | var html = app.createHTML(htmlString).setStyleAttributes(popAttributes); | |
| 252 | var panel = app.createScrollPanel(html); | |
| 253 | var pop = app.createPopupPanel(true).setPopupPosition(240,280).add(panel).setPixelSize(400,200).setStyleAttributes(popAttributes); | |
| 254 | pop.show(); | |
| 255 | return app; | |
| 256 | } | |
| 257 | ||
| 258 | function killTrig(e){
| |
| 259 | var Existingtriggers = UserProperties.getProperty('triggers').split(',');
| |
| 260 | for(var n in Existingtriggers){
| |
| 261 | var triggers = ScriptApp.getProjectTriggers(); | |
| 262 | for (var i = 0; i < triggers.length; i++) {
| |
| 263 | if (triggers[i].getUniqueId() == Existingtriggers[n].split('|')[0]) {
| |
| 264 | ScriptApp.deleteTrigger(triggers[i]); | |
| 265 | Logger.log('deleted '+Existingtriggers[n].split('|')[1]);
| |
| 266 | } | |
| 267 | } | |
| 268 | } | |
| 269 | UserProperties.setProperty('triggers','');
| |
| 270 | UserProperties.setProperty('mailCheck',false);
| |
| 271 | UserProperties.setProperty('docUrls','');
| |
| 272 | var app = UiApp.getActiveApplication(); | |
| 273 | var wait = app.getElementById('wait').setVisible(false);
| |
| 274 | var html = app.createHTML('All triggers have been deleted,<br>no document will be created anymore and no mails will be sent.').setStyleAttributes(popAttributes);
| |
| 275 | var pop = app.createPopupPanel(true).setPopupPosition(150,280).add(html).setPixelSize(400,65).setStyleAttributes(popAttributes); | |
| 276 | pop.show(); | |
| 277 | return app; | |
| 278 | } | |
| 279 | ||
| 280 | function makeTrig(e){
| |
| 281 | var app = UiApp.getActiveApplication(); | |
| 282 | var wait = app.getElementById('wait').setVisible(false);
| |
| 283 | var folderName = UserProperties.getProperty('folderName');
| |
| 284 | var docName = UserProperties.getProperty('docName');
| |
| 285 | var docID = UserProperties.getProperty('docID');
| |
| 286 | var chkmail=''; | |
| 287 | if(e.parameter.mailCheck=='true'){chkmail='An email will be sent to you on every working day with the links of the 6 most recently created documents.<br>'};
| |
| 288 | var html = app.createHTML('A new document will be created every working day around midnight based on the template ('
| |
| 289 | +docName+') in the chosen folder ('+folderName
| |
| 290 | +')<br>'+chkmail+'<br>To stop this process simply re-run this application and choose the "kill all processes" option.').setStyleAttributes(popAttributes) | |
| 291 | var pop = app.createPopupPanel(true).setPopupPosition(150,300).add(html).setPixelSize(400,230).setStyleAttributes(popAttributes); | |
| 292 | pop.show(); | |
| 293 | var triggerID = ScriptApp.newTrigger('createDocument').timeBased().everyDays(1).atHour(0).create().getUniqueId();
| |
| 294 | if(UserProperties.getKeys().toString().match('triggers')=='triggers'){
| |
| 295 | var triggers = UserProperties.getProperty('triggers').split(',');
| |
| 296 | }else{
| |
| 297 | var triggers = []; | |
| 298 | } | |
| 299 | triggers.push(triggerID+'|'+docName); | |
| 300 | UserProperties.setProperty('triggers',triggers.toString());
| |
| 301 | return app; | |
| 302 | } | |
| 303 | ||
| 304 | function testCreateDocument(e){
| |
| 305 | var IDs = UserProperties.getProperty('IDs');
| |
| 306 | var ID = IDs.substring(0,Number(IDs.lastIndexOf("|")));
| |
| 307 | var doctype = IDs.substr(Number(IDs.lastIndexOf("|"))+1);
| |
| 308 | var docname = e.parameter.Dlb | |
| 309 | var docN = docname.substr(0,docname.lastIndexOf("("));
| |
| 310 | UserProperties.setProperty('docName',docN);
| |
| 311 | UserProperties.setProperty('docID',ID);
| |
| 312 | createDocument('test');
| |
| 313 | var app = UiApp.getActiveApplication(); | |
| 314 | var wait = app.getElementById('wait').setVisible(false);
| |
| 315 | var docName = UserProperties.getProperty('docName');
| |
| 316 | var folderName = UserProperties.getProperty('folderName');
| |
| 317 | Logger.log(docName+' '+folderName); | |
| 318 | var html = app.createHTML('A test document has been created ('+docName+') in the chosen folder ('+folderName+')').setStyleAttributes(popAttributes);
| |
| 319 | var pop = app.createPopupPanel(true).setPopupPosition(150,280).add(html).setPixelSize(400,65).setStyleAttributes(popAttributes); | |
| 320 | pop.show(); | |
| 321 | return app; | |
| 322 | } | |
| 323 | ||
| 324 | function createDocument(test){
| |
| 325 | if(!test){ var today = new Date().getDay()}else{today=1};
| |
| 326 | if(today==6 || today==0){return} ;// prevents creating doc on Saturday and Sunday
| |
| 327 | var folderName = UserProperties.getProperty('folderName');
| |
| 328 | var docName = UserProperties.getProperty('docName');
| |
| 329 | var docID = UserProperties.getProperty('docID');
| |
| 330 | var Folderhref = DocsList.getRootFolder().getUrl(); | |
| 331 | var newDoc = DocsList.getFileById(docID).makeCopy(docName+Utilities.formatDate(new Date(),Session.getTimeZone(),'yyyy-MMM-dd')); | |
| 332 | if(folderName!='My Drive'){
| |
| 333 | newDoc.addToFolder(DocsList.getFolder(folderName)); | |
| 334 | newDoc.removeFromFolder(DocsList.getRootFolder()); | |
| 335 | Folderhref = DocsList.getFolder(folderName).getUrl(); | |
| 336 | } | |
| 337 | var newDocUrl = newDoc.getName()+'|'+newDoc.getUrl(); | |
| 338 | if(UserProperties.getKeys().toString().indexOf('docUrls')!=-1||UserProperties.getProperty('docUrls')==''){
| |
| 339 | var docUrls = UserProperties.getProperty('docUrls').split(',');
| |
| 340 | Logger.log(docUrls); | |
| 341 | }else{
| |
| 342 | var docUrls = []; | |
| 343 | } | |
| 344 | var ll = docUrls.length;// check number of memorized docs | |
| 345 | if(ll>5){
| |
| 346 | var newList = docUrls.splice(ll-5,5);// if more than 5 keep only last 5 docs | |
| 347 | var docUrls = newList; | |
| 348 | } | |
| 349 | docUrls.push(newDocUrl); | |
| 350 | UserProperties.setProperty('docUrls',docUrls.toString());
| |
| 351 | var mailCheck = UserProperties.getProperty('mailCheck')=='true';
| |
| 352 | if(!mailCheck){return};
| |
| 353 | var msg = 'AutoDocCreator V2 report on '+Utilities.formatDate(new Date(),Session.getTimeZone(),'yyyy-MMM-dd HH:mm') | |
| 354 | var txtMsg = msg+'\n\nA new document has been created for you,\nsee below the list of the most recent documents (most recent on top)\n\n'; // begin text only msg | |
| 355 | msg+='<br><br>A new document has been created for you,<br>see below the list of the most recent documents (most recent on top)<br>'; | |
| 356 | msg+='created in <a href="'+Folderhref+'" target="_blank">your chosen folder ('+folderName+').</a><br><br>';
| |
| 357 | msg+='<table style="background-color:lightblue;border-collapse:collapse;" border = 1 cellpadding = 10><tr bgcolor = "#ffaaaa">';// most recent have reddish background | |
| 358 | for(var n=docUrls.length-1;n>0;n--){
| |
| 359 | var x = docUrls[n].split('|');
| |
| 360 | var name = x[0]; | |
| 361 | var href = x[1]; | |
| 362 | msg+='<td>'+(docUrls.length-n)+'</td><td><a href="'+href+'" target="_blank">'+name+'</a></td></tr><tr>';// open link in other tab | |
| 363 | txtMsg+=(docUrls.length-n)+' - '+name+' : '+href+'\n' | |
| 364 | } | |
| 365 | msg+='</table><br><br>Use <a href="'+ScriptApp.getService().getUrl()+'" target="_blank">this link</a> to run the application that created the files<br>'; | |
| 366 | txtMsg+='\n\nUse this link to run the application that created the files\n'+ScriptApp.getService().getUrl()+'\n'; | |
| 367 | MailApp.sendEmail(Session.getEffectiveUser().getEmail(),'AutoCreateDoc report', txtMsg,{'htmlBody':msg});
| |
| 368 | } | |
| 369 | //eof 09-14_2013 |