【问题标题】:Cannot get json data with google-apps-script无法使用 google-apps-script 获取 json 数据
【发布时间】:2019-12-22 07:04:46
【问题描述】:

我想获取 json 数据并将其添加到电子表格中, 但我无法使用 google-apps-script 获取 json 数据。

function doPost(e) {
  try{
    var ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId());
    var sheet = ss.getSheetByName("sheet1");

    var params = JSON.parse(e.postData.getDataAsString());
    var time = params.time;
    var event = params.event;

    sheet.appendRow([event],[time]);

  }catch(e){
    sheet.appendRow([e]);
  }   
}

function execDoPost() {
  //Post data of json
 time  = new Date();
 var e = {
    parameter : {
      "time":time,
      "event":"test"
    }
 };
 doPost(e);
}

错误信息是TypeError: Unable to call undefined method "getDataAsString"
我尝试了以下方法。

var params = e.parameter;

我只能得到“未定义”的数据 我已允许对特定 Google 服务进行授权。
感谢您的阅读!(对不起我的英语不好。)

我要插入以下数据。

{
    "index": 1,
    "age": 38,
    "registered": "Tuesday, July 9, 2019 7:01 PM"
  },
  {
    "index": 2,
    "age": 37,
    "registered": "Saturday, April 28, 2018 9:00 AM"
  },
  {
    "index": 3,
    "age": 21,
    "registered": "Thursday, January 17, 2019 6:31 PM"
  },
  {
    "index": 4,
    "age": 33,
    "registered": "Friday, April 20, 2018 12:41 PM"
  }

此外,我们还计划将姓名、电子邮件地址等放入。

【问题讨论】:

  • 您能分享一些您尝试附加的原始 JSON 吗?请随时编辑您可能拥有的任何机密信息。
  • 尝试用方括号括起来[]

标签: google-apps-script


【解决方案1】:

我在 JSON 方面还是有点弱,所以我用这个小对话框在 Google Apps 脚本中使用它。

function runOne() {
  var ss=SpreadsheetApp.getActive();
  var html='<html><head>';
  html+='<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>';
  html+='</head><body><textarea id="txt1" rows="4" cols="50"></textarea>';
  html+='<br /><input type="button" value="SendData" onClick="sendData();" />';
  html+='<script>function sendData(){var data=$("#txt1").val();google.script.run.loadData(data);}</script>';
  html+='</body></html>';
  var ui=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showSidebar(ui);
}

function loadData(data) {
  Logger.log(data);
  var dt=JSON.parse(data);
  Logger.log(dt);
  var vA=[];
  dt.forEach(function(obj) {
    vA.push([obj.index,obj.age,obj.registered]);
  });
  Logger.log(vA);
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  sh.getRange(sh.getLastRow()+1,1,vA.length,vA[0].length).setValues(vA)
}

我是从这个开始的:

[{"index": 1,"age": 38,"registered": "Tuesday, July 9, 2019 7:01 PM"}, { "index": 2,"age": 37,"registered": "Saturday, April 28, 2018 9:00 AM"},{"index": 3,"age": 21,"registered": "Thursday, January 17, 2019 6:31 PM"},{"index": 4,"age": 33,"registered": "Friday,April 20, 2018 12:41 PM"}]

这是我的脚本输出:

这样你就可以将它作为一个 webapp 运行:

function runOne(mode) {
  var mode=mode||'dialog';
  var ss=SpreadsheetApp.getActive();
  var html='<!DOCTYPE html><html><head>';
  html+='<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>';
  html+='</head><body><textarea id="txt1" rows="4" cols="50"></textarea>';
  html+='<br /><input type="button" value="SendData" onClick="sendData();" />';
  html+='<script>function sendData(){var data=$("#txt1").val();google.script.run.loadData(data);}</script>';
  html+='</body></html>';
  var ui=HtmlService.createHtmlOutput(html);
  if(mode=='dialog') {
    SpreadsheetApp.getUi().showSidebar(ui);
  }else{
    return ui;
  }
}
function doGet() {
  return runOne('web');
}

JSON Validator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    相关资源
    最近更新 更多