2013-06-25 40 views

回答

2

听起来像是你想ContentService。你为你想要的动词编写一个函数(GET为doGet,POST为doPost,其他不支持),然后你可以通过将其名称作为参数委托给另一个函数。

1

最简单的方法是编写一个接受参数的Web应用程序,将它们传递给函数,然后返回函数的输出。 (如科里说......但我已经写了这一切的代码,所以在这里你去!)

这正是如此,一个简单的计算器功能:

/** 
* GET requests should be for read-only queries; they should not change the state of the server and its data. 
*/ 
function doGet(e) { 
    var output = ''; 
    if (Object.keys(e.parameters).length < 3) { 
    output += doMath('help','0','0'); 
    } 
    else { 
    output += JSON.stringify(e.parameters) +'\n'; // Echo parameters - debug only 
    output += doMath(e.parameters.operation[0], e.parameters.val1[0], e.parameters.val2[0]); 
    } 

    return ContentService 
      .createTextOutput(output) 
      .setMimeType(ContentService.MimeType.JSON); 
} 

如果你想成为一个完整的极简主义,这将工作,没有错误处理:

function doGet(e) { 
    return ContentService 
      .createTextOutput(doMath(e.parameters.operation[0], e.parameters.val1[0], e.parameters.val2[0])) 
      .setMimeType(ContentService.MimeType.JSON); 
} 

为了有效在这个模型中,你的目标函数需要处理自己的错误处理和返回的东西在所有情况下是有用的。下面是一个简单的计算器:

function doMath(operation, val1, val2) { 
    // Do error checking for parameters 
    var errors = ''; 
    for (var arg in arguments) { 
    if (arguments[arg] == 'undefined') errors += "Missing " + arg + '\n'; 
    if (arg.indexOf('val') !== -1) { 
     if (isNaN(arguments[arg])) errors += "Not a number: " + arg + '\n'; 
    } 
    } 
    // If we found errors, just report them 
    if (errors != '') return errors; 

    // Body of function 
    var result; 
    var num1 = parseFloat(val1); 
    var num2 = parseFloat(val2); 
    switch (operation) { 
    case 'add': 
     result = num1 + num2; 
     break; 
    case 'sub': 
     result = num1 - num2; 
     break; 
    case 'mult': 
     result = num1 * num2; 
     break; 
    case 'div': 
     if (num2 !== 0.0) { 
     result = num1/num2; 
     } 
     else { 
     result = 'Divide by zero'; 
     } 
     break; 
    case 'help': 
     result = "Example:\n\n" 
      + " "+ScriptApp.getService().getUrl() 
      + "?operation=add&val1=2&val2=2\n\n" 
      + "Returns '4'"; 
     break; 
    default: 
     result = 'Unsupported operation'; 
     break; 
    } 
    return result; 
} 

在部署您的Web应用程序,记得将其提供给“每个人,甚至是匿名”,根据this answer

相关问题