Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
google脚本中的jsonpajax_Ajax_Google Apps Script_Jsonp_Urlfetch_Http Method - Fatal编程技术网

google脚本中的jsonpajax

google脚本中的jsonpajax,ajax,google-apps-script,jsonp,urlfetch,http-method,Ajax,Google Apps Script,Jsonp,Urlfetch,Http Method,我正在尝试学习如何从当地政府数据网站查询数据(希望我能教我的数学学生做一些数据分析)。我希望得到这些数据,并将它们插入谷歌的表单。以下是官方网站提供的关于如何进行查询的示例: var data = { resource_id: '1b702208-44bf-4829-b620-4615ee19b57c', // the resource id limit: 5, // get 5 results q: 'jones' // query for 'jones' }; $.ajax({

我正在尝试学习如何从当地政府数据网站查询数据(希望我能教我的数学学生做一些数据分析)。我希望得到这些数据,并将它们插入谷歌的表单。以下是官方网站提供的关于如何进行查询的示例:

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();

  }
问题: 每当
UrlFetchApp
options
/
params
参数中出现
有效负载
键时,
方法
默认设置为
post
。任何试图更改获取方法的尝试都会被“静默”忽略。其他类似的脚本平台会自动将
有效负载
转换为url查询参数。但是,
UrlFetchApp
会默默地将方法更改为post,而不会更改其他内容

解决方案: 将数据对象重新创建为查询字符串。例如,
数据:{x:1,y:2}
应更改为
?x=1&y=2
,并附加到url

片段:
函数objectToQueryParams(obj){
返回(
'?' +
Object.entries(obj)
.map([k,v])=>`${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
.join(“&”)
);
}
风险值数据={
资源id:'1b702208-44bf-4829-b620-4615ee19b57c',//资源id
限制:5,//获得5个结果
q:'Yishun',//查询'jones'
};

log(objectToQueryParams(data))可能重复我更改了代码,但仍然得到404错误。
方法
错误。我确实更改了方法以获得,但错误仍然存在。
function testapi() {
  var options = {
    method: 'get',
    // 'contentType': 'application/json',
    // 'payload' : data,//If set, method is ignored.
    headers: { Accept: '*/*', 'Content-Type': 'application/json' },
    muteHttpExceptions: true,
  };

  var url = 'https://data.gov.sg/api/action/datastore_search';
  //var url = 'https://httpbin.org/get'; test the method

  function objectToQueryParams(obj) {
    return (
      '?' +
      Object.entries(obj)
        .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
        .join('&')
    );
  }
  var data = {
    resource_id: '1b702208-44bf-4829-b620-4615ee19b57c', // the resource id
    limit: 5, // get 5 results
    q: 'Yishun', // query for 'Yishun'
  };
  var query = objectToQueryParams(data);
  url += query;
  var response = UrlFetchApp.fetch(url, options).getContentText();
  Logger.log(response);
}