我想获取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"
}
此外,我们计划将姓名、电子邮件地址等。
发布于 2019-12-22 03:12:06
当涉及到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');
}
https://stackoverflow.com/questions/59433756
复制相似问题