>source

지방 정부 데이터 사이트에서 데이터를 쿼리하는 방법을 배우려고합니다 (수학 학생들에게 데이터 분석을 지시 할 수 있음). 데이터를 가져 와서 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 Script에서 다음 코드를 시도했습니다 :

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

    문제 :

    와이즈 비즈  키가 payload 에 있습니다 / options   params 의 논쟁 UrlFetchApp   method 로 설정  기본적으로. 그리고 메소드를 변경하기위한 시도는 "자동"무시됩니다. 다른 유사한 스크립팅 플랫폼은 자동으로 post 를 변환합니다  검색어 매개 변수를 url로 그러나 payload  자동으로 메소드를 게시하고 다른 것은 변경하지 않습니다.

    솔루션 :

    데이터 개체를 쿼리 문자열로 다시 만듭니다. 예를 들어, UrlFetchApp   data:{x:1,y:2} 로 변경해야합니다  URL에 추가됩니다.

    스 니펫 :
    ?x=1&y=2
    
    
    관련 :

    UrlSearchParams

    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: '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 var query = '?', i = 0; for (var key in data) { i ? (query += '&') : null; query += key + '=' + data[key]; i = 1; } url += query; var response = UrlFetchApp.fetch(url, options).getContentText(); Logger.log(response); }

관련 자료

  • 이전 typescript - Tomcat의 각도 배포 문제
  • 다음 android - Gradle이 프로젝트를 빌드 할 수없는 이유를 이해할 수 없습니다