Learn the powerful enterprise adaptable database:

Getting Started With ADABAS & Natural

Monday, February 2, 2015

202 Apps Script Task Manager


.

202 Apps Script Task Manager

1) Create Project Script

Project name: 202
Script files:
1Util.gs
2TaskMan.gs
3Web.gs
web.html

2) Edit web.html


<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1>Home</h1>
  </body>
</html>

3) Edit Util.gs


/*getHTML*/
function getHTML(file) {
    if (!file) {
      var outputHtml = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
      outputHtml.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
      outputHtml.addMetaTag('viewport', 'width=device-width, initial-scale=1');  
    return outputHtml;
    };
    var outputHtmlFile = HtmlService.createHtmlOutputFromFile(file); /*need to create html file*/
    outputHtmlFile.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
    outputHtmlFile.addMetaTag('viewport', 'width=device-width, initial-scale=1');
   
    return outputHtmlFile;
}
/*createHTML*/
function createHTML(htmlcodes) {
    if (!htmlcodes) {
      var outputHtml = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
      outputHtml.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
      outputHtml.addMetaTag('viewport', 'width=device-width, initial-scale=1');
   
    return outputHtml;
    };
    var outputHtml = HtmlService.createHtmlOutput(htmlcodes);
    outputHtml.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
    outputHtml.addMetaTag('viewport', 'width=device-width, initial-scale=1');
   
    return outputHtml;
}
/*createJSON*/
function createJSON(data) {
    if (!data) {
        data = []
    };
    var outputJson = ContentService.createTextOutput(JSON.stringify({
        "status": "success",
        "content": data
    })).setMimeType(ContentService.MimeType.JSON);
    return outputJson;
}

4) Edit TaskMan.gs


/*taskManager*/
function taskMan(cmd, e) {
  switch(cmd){
     case "gethome":
         return getHTML('home.html')
        break;  
     case "testhtml":
       var htmlcodes;
         if (!e.parameter.testcodes) {
           htmlcodes='<b>Hello, test!</b>';
         }else{
           htmlcodes=e.parameter.testcodes;
         }
         
         return createHTML(htmlcodes)
        break;
     case "testjson":
       var jsoncodes;
         if (!e.parameter.testcodes) {
           jsoncodes={test: 'Hello, test'};
         }else{
           jsoncodes=e.parameter.testcodes;
         }      
          return createJSON(jsoncodes)
         break;        
  }
}

5) Edit WebApp.gs


function doGet(e) {
  return handleResponse(e);
}
function doPost(e) {
  return handleResponse(e);
}
/* handle action request */
function handleResponse(e) {
  var lock = LockService.getPublicLock();
  lock.waitLock(30000); // wait 30 seconds before conceding defeat.
  try {
    //Logger.log(e)
    var cmd = e.parameter.cmd;
   
    if (cmd == "appsetup") {
       return "appsetup"
      //return taskMan("appsetup", e);
    }
    else if (cmd == "gethome") {
       return taskMan("gethome",e);
    }      
    else if (cmd == "testhtml") {
       return taskMan("testhtml",e);
    }    
    else if (cmd == "testjson") {
       return taskMan("testjson",e)
    }        
    else { /*default case*/
       
       strOutput={"status": "success","content": "hello!"}
       //Logger.log(JSON.stringify(strOutput))
       
       return ContentService.createTextOutput(JSON.stringify(strOutput))
       .setMimeType(ContentService.MimeType.JSON);
       
    }
   
  } catch (e) { /*if error return this*/
       strOutput={"status": "error","content": e}
       //Logger.log(JSON.stringify(strOutput))
       
       return ContentService.createTextOutput(JSON.stringify(strOutput))
       .setMimeType(ContentService.MimeType.JSON);
  } finally { /*release lock*/
    lock.releaseLock();
  }
}
function testHandleResponse(){
   var e0={} //invalid empty parameter
   var e1={parameter:{}} //valid empty parameter
   var e2={parameter:{cmd:"appsetup"}} //valid parameter
   Logger.log(handleResponse(e2))
}

6) Publish and Test

URL:

no
parameter
outcome
1
?cmd=testhtml
2
?cmd=testhtml&testcodes=try
3
?cmd=testhtml&testcodes=<h1>try<h1>
4
?cmd=testjson
5
?cmd=testjson&testcodes=<h1>try<h1>
6
?cmd=gethome
.

.
201502

No comments:

Post a Comment