Google脚本中的jsonp ajax

时间:2019-05-18 14:44:25

标签: ajax google-apps-script jsonp urlfetch http-method

我正在尝试学习如何从当地政府数据站点查询数据(希望我可以教数学学生进行一些数据分析)。我希望获取数据并将其插入Google表格。以下是官方网站提供的有关如何执行查询的示例:

var data = {
  resource_id: '1b702208-44bf-4829-b620-4615ee19b57c', // the resource id
  limit: 5, // get 5 results
  q: 'jones' // query for 'jones'
};
$.ajax({
  url: 'https://data.gov.sg/api/action/datastore_search',
  data: data,
  dataType: 'jsonp',
  success: function(data) {
    alert('Total results found: ' + data.result.total)
 }
});$

我在Google Apps脚本中尝试了以下代码:

function testapi(){
  var data = {
    resource_id: '1b702208-44bf-4829-b620-4615ee19b57c', // the resource id
    limit: 5, // get 5 results
    q: 'Yishun' 
  };

  var url = "https://data.gov.sg/api/action/datastore_search";
  var response = UrlFetchApp.fetch(url,data).getContentText();
}

我收到404错误。我认为未通过“数据”选项。

将感谢您的帮助。我是数学老师,不是编码专家。

更新:我将代码更改为此,但仍然出现404错误。

function testapi(){
  var data = {
    resource_id: '1b702208-44bf-4829-b620-4615ee19b57c', // the resource id
    limit: 5, // get 5 results
    q: 'Yishun' // query for 'jones'
  };

  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };  

  var url = "https://data.gov.sg/api/action/datastore_search";
      var response = UrlFetchApp.fetch(url,options).getContentText();

  }

1 个答案:

答案 0 :(得分:0)

问题:

只要payload的{​​{1}} / options自变量中出现params键,UrlFetchApp就会默认设置为method。任何更改获取方法的尝试都会被“无声地”忽略。其他类似的脚本平台会自动将post转换为url查询参数。但是,payload默默地更改了发布方法,仅此而已。

解决方案:

重新创建数据对象作为查询字符串。例如,UrlFetchApp应该更改为data:{x:1,y:2}并附加到url。

摘要:

?x=1&y=2

相关:

UrlSearchParams