如何使用Appscript doPost创建REST API?

时间:2012-12-25 21:32:43

标签: google-apps-script

1个月后,我想再次提出有关此主题的问题: 以下是包含所有链接的整篇文章:https://docs.google.com/document/d/1Tb0-twzHl-wXbvaNF2IpCT0CiONT9PoqPlEweLz3oYI/edit

项目中有一个函数,urlFetchApp在第二个脚本函数中使用doPost发送有效负载。 第二个函数将有效负载存储在1.电子表格中:当运行第一个函数时,第二个函数不会将有效负载存储在电子表格中。详细说明如下:

1。带脚本的项目

function merry2script() {
  var url = 'https://script.google.com/macros/s/AKfycbzM97wKyc0en6UrqXnVZuR9KLCf-UZAEpzfzZogbYApD9KChnnM/exec';
  var payload = {payloadToSend : 'string to send'};
  var method = 'post'
  var response = UrlFetchApp.fetch(url, {method : method, payload: payload}).getContentText();
  Logger.log(response);
  return;
}

img merry2.jpg

2。带脚本的项目

function doPost(e) {
  var ss = SpreadsheetApp.openById("0Apjz67q9b5PldFJUYkkzVGRHdGFYc1pFYWk5T0Eyc0E");
  var sheet = ss.getSheetByName("testsheet");
  var record;
  for (var i in e.parameters) {
    record = 'parameter: ' + i + ' = ' + e.parameters[i];
    sheet.getRange(sheet.getLastRow() + 1, 1, 1, 1).setValue(record);
  }
  var output = ContentService.createTextOutput();
  output.setContent("content to return");
  return output;
}

img merry_christmas.jpg

发表2.脚本,

img出版的证据2.脚本: mch1.jpg

1。电子表格 https://docs.google.com/spreadsheet/ccc?key=0Apjz67q9b5PldFJUYkkzVGRHdGFYc1pFYWk5T0Eyc0E

结果: 当有效负载通过hurl.it(网页)发送时,它不会显示在电子表格中。 尝试没有结果

尝试使用此选项 安装此chrome扩展程序  “高级REST客户端” 客户机/ hgmloofddffdnphfgcellkdfbfbjeloo img结果

会产生电子表格 ss_test.jpg

2 个答案:

答案 0 :(得分:1)

要从发布的网址获取回复,必须使用以下设置发布:

  1. 执行应用程序: me
  2. 谁有权访问该应用:任何人甚至匿名
  3. 这是必需的,因为您获取网址的方式只能访问公共网址。

答案 1 :(得分:0)

您只需要将headers键包含在字典中就可以了 当然,除了Hari Das所说的

标题:{“ Authorization”:“ Bearer” + ScriptApp.getOAuthToken()}

function merry2script() {
      var url = 'https://script.google.com/macros/s/AKfycbzM97wKyc0en6UrqXnVZuR9KLCf-UZAEpzfzZogbYApD9KChnnM/exec';
      var payload = {payloadToSend : 'string to send'};
      var method = 'post'
      var headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()}
      var response = UrlFetchApp.fetch(url, {method : method, payload: payload, headers: headers}).getContentText();
      Logger.log(response);
      return;
    }