首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用google-apps-script获取json数据

无法使用google-apps-script获取json数据
EN

Stack Overflow用户
提问于 2019-12-21 13:38:46
回答 1查看 265关注 0票数 2

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

代码语言:javascript
运行
复制
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服务进行授权。

感谢您的阅读!(对不起,我的英语很差。)

我想插入以下数据。

代码语言:javascript
运行
复制
{
    "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"
  }

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

EN

回答 1

Stack Overflow用户

发布于 2019-12-22 03:12:06

当涉及到JSON时,我仍然有点弱,所以我在Google Apps脚本中使用了这个小对话框。

代码语言:javascript
运行
复制
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来运行了:

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59433756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档