我正在从google sheet中获取一个数据列表到我的android应用中。谷歌脚本正常运行,测试运行也提供了正确的输出。然而,在android应用中接收到的JSON数据看起来像垃圾。这是我的android端代码。我使用的是Volley。
private fun getList() {
val stringRequest = StringRequest(
Request.Method.GET, "https://docs.google.com/spreadsheets/d/***********/edit#gid=0",
Response.Listener<String> { response ->
Log.d("MyMessage", response)
parseItems(response)
},
Response.ErrorListener { responseEr -> }
)
val socketTimeOut = 500000
val policy = DefaultRetryPolicy(socketTimeOut, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)
stringRequest.retryPolicy = policy
val queue = Volley.newRequestQueue(this)
queue.add(stringRequest)
}
google的appscript如下
function doGet(e){
var action = e.parameter.action;
if(action == 'getList'){
return getList(e);
}
}
function getList(e){
var records={};
var sheet = ss.getSheetByName('*****');
var rows = sheet.getDataRange().getValues();
data = [];
for (var r = 1; r < 10; r++) {
record = rows[r][1];
data.push(record);
}
records.items = data;
var result=JSON.stringify(records);
return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
}
当我用提供的链接测试appCode脚本时,我得到了正确的列表:
{"items":["****","****","****",........,"*****"]}
但是android应用的响应日志提供了以下输出。
< !DOCTYPE html> ......< meta name="viewport" ................................................................................................................................................................................................................ .ritz .waffle a { color: inherit; }.ritz .waffle .s2{border-left: none;border-right: none;backgroun ......tom;white-space:nowrap;directory:ltr;padding"
我在这里做错了什么?
这返回。
["COL2",10,11,3,3,2,1,7,11,5,9,3,10]
从这张表的数据。
COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8,COL9,COL10,COL11,COL12
7,10,8,0,0,1,3,11,2,10,9,7
11,11,6,0,1,2,11,7,6,4,1,6
7,3,6,0,6,4,6,1,1,7,8,1
9,3,1,2,11,1,2,10,11,8,1,0
1,2,9,5,11,4,11,9,3,10,0,11
7,1,0,3,8,10,3,4,11,3,1,1
10,7,9,11,11,5,1,5,0,6,11,9
5,11,3,5,3,5,3,7,3,6,9,6
4,5,1,6,7,3,8,3,2,4,3,10
11,9,11,11,6,8,3,0,3,5,9,11
5,3,9,10,9,8,10,5,1,11,9,0
6,10,0,8,10,5,2,2,6,4,5,6
还有这个网址:
https://script.google.com/a/............/exec?action=getlist
和这个gs代码:
function doGet(e){
if(e.parameter && e.parameter.action=='getlist') {
return getList();
}
}
function getList(){
var ss=SpreadsheetApp.openById('Spreasheet Id')
var sh=ss.getSheetByName('Sheet Name');
var vA=sh.getRange(1,2,sh.getLastRow(),1).getValues().map(function(r,i){return r[0]});
return ContentService.createTextOutput(JSON.stringify(vA));
}
安卓应用的权限不足,无法访问Apps脚本网页应用,并被重定向到谷歌的登录页面。一些解决方案包括