0

Google Apps Script で、スクリプト内の関数を呼び出す REST API を作成する簡単な方法は何ですか?

REST の動詞 (GET、POST、UPDATE、DELETE) では、機能を JavaScript メソッドにマップする方法についていくつかの決定が必要であることは理解していますが、「このメソッドの REST インターフェイスを提供してください」と言う最も一般的な方法を探しています。 .

4

2 に答える 2

1

doGet()最も簡単な方法は、パラメーターを受け取り、それらを関数に渡し、関数の出力を返す を使用してWebApp を作成することです。(コーリーが言ったように...しかし、このコードはすべて私が書いたので、どうぞ!)

これは、単純な電卓関数の場合、まさにそれを行います。

/**
 * 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 アプリをデプロイするときは、「誰でも、たとえ匿名でも」利用できるようにすることを忘れないでください。

于 2013-06-26T03:36:41.693 に答える