2017-12-03 6 views
0

google trends API을 사용하여 추세 데이터를 엑셀 파일로 내보낼 수 있습니다. 문제는 키워드에 formattedTime 및 value 만 추출하려는 것입니다. Ive가 이것을 시도하는 동안, 나는 또한 results이 제대로 당겨지지 않는 것을 알아 차렸다. 예를 들어 빈 사전에 API의 결과를 푸시하려고하면 빈 배열이 계속 표시됩니다.결과를 자바 스크립트 사전으로 푸시 할 수 없음

아이디어가 있으십니까?

감사합니다. 데이터의

'use strict'; 

const googleTrends = require('google-trends-api'); 

var something = [];  

    googleTrends.interestOverTime({ 
     keyword: 'animals', 
     startTime: new Date(Date.now() - (1 * 60 * 60 * 1000)), 
     granularTimeResolution: true, 
    }, function(err, results) { 
     something.push(results); 
     if (err) 
      console.log('oh no error!', err); 
     else 
      console.log("--------------------------") 

    }); 

console.log(something); 

예 빼서 :

{ 
    "default": { 
    "timelineData":[ 
     { 
     "time":"1511629200", 
     "formattedTime":"Nov 25, 2017 at 12:00 PM", 
     "formattedAxisTime":"Nov 25 at 12:00 PM", 
     "value":[44], 
     "formattedValue":["44"] 
     }, 
     { 
     "time":"1511632800", 
     "formattedTime":"Nov 25, 2017 at 1:00 PM", 
     "formattedAxisTime":"Nov 25 at 1:00 PM", 
     "value":[41], 
     "formattedValue":["41"] 
     } 
    }] 
    } 
} 

답변

1

Google에 호출이 비동기, 그래서 당신은 당신이 something에 결과를 밀어 콜백 내에서 결과를 로그 아웃해야합니다. 그렇지 않으면 console.log(something)이 실제로 을 실행 중입니다. 콜백이 완료되고 배열에 푸시 된 값이 없습니다.

'use strict'; 

const googleTrends = require('google-trends-api'); 

var something = [];  

googleTrends.interestOverTime({ 
    keyword: 'bitcoin', 
    startTime: new Date(Date.now() - (1 * 60 * 60 * 1000)), 
    granularTimeResolution: true, 
}, function(err, results) { 
    something.push(results); 
    if (err) 
     console.log('oh no error!', err); 
    else{ 
     console.log(something); 
     console.log("--------------------------") 
    } 
});