2012-11-21 2 views
1

예를 들어 게임 웹 사이트에 등록 된 플레이어의 수를 끌어 내기 위해 만든 쉘 스크립트가 있습니다. 숫자를 가져 와서 타임 스탬프를 추가하고 Google 스프레드 시트에 저장하여 시간 경과에 따라 그래프를 만들어 데이터를 추적 할 수있었습니다. 유일한 문제는 그것을 실행하는 것입니다, 나는 내 컴퓨터를 켜 놓을 필요가 있습니다. 나는 당신이 어떤 종류의 google 스크립트로 이것을 할 수 있다고 생각할 것입니다.하지만 어떻게 시작 해야할지 전혀 모르겠습니다.웹 사이트에서 텍스트를 가져 오는 Google 앱 스크립트

내가 사용하는 쉘 스크립트였다 :

wget --output-document=- http://runescape.com/title.ws 2>/dev/null \ 
| grep PlayerCount \ 
| head -1l \ 
| sed 's/^[^>]*>//' \ 
| sed "s/currently.*$/$(date '+%m\/%d\/%Y %H:%M:%S')/" \ 
| cut -d">" -f 3,4 \ 
| sed 's/<\/span>//' \ 
| sed 's/,//' \ 
| awk '{printf "%s %s,%s,%s\n", $3, $4, $1, $2}' 

출력 예 : 내가 원하는 무엇 11/21/2012 01:02:22,52833,people

가 자동 해당 번호를 당겨 셀에 예를 들어 2 분마다 보관 것이 었습니다. 그러나 나는 그것이 얼마나 쉽고 어디에서 시작해야 할 지 잘 모르겠습니다. 당신은 페이지의 콘텐츠를 가져 오기 위해 애플리케이션 스크립트에 URL을 가져올 응용 프로그램을 사용할 수 있습니다

답변

4

이렇게 할 때 할당량 한도에 도달 할 수 있습니다. 그러나 여기에 내가 그것을 어떻게 할 것인가가있다.

Google 스프레드 시트를 연 다음 메뉴 도구> 스크립트 편집기를 클릭하고 위 코드를 붙여 저장하십시오. 여전히 스크립트 편집기에서 자원> 현재 스크립트의 트리거를 클릭하십시오. 그런 다음 시간 기반 트리거에서 실행되도록이 함수를 설정하십시오.

+0

나는 이것을 좋아한다. 질문이 있지만 지금까지하지 않는지 알아보기 위해 지금 테스트 할 것입니다. 이 언어는 어떤 언어로 쓰여 있으며이 기능에 대해 어떻게 배울 수 있습니까? 할당량 한도를 알고 계십니까? – Aaron

+1

@Aaron Google Apps 스크립트 학습을 시작할 수 있습니다. @ https://developers.google.com/apps-script/ Google Apps는 Google 서버에서 실행되는 자바 스크립트를 사용합니다. –

+0

@Henrique Abreu 군사 시간이 있습니까? 거기에 AM과 PM이있는 선 그래프를 만들 수 없으므로 그래프가 엉망이 될 수 있습니다. – Aaron

1

http://i.imgur.com/xRpNy.png처럼

는 그럼 보일 것이다 그 플레이어의 수를 얻기 위해 정규 표현식을 사용하여 구문 분석 할 수 있습니다. 여기 제가 시도한 약간의 코드가 있습니다. Apps Script와 함께 YQL을 사용하여 정규 표현식 파싱을 방지합니다.

function retreiveOnlineUsers(){ 
    var query = 'select * from html where url="http://runescape.com/title.ws" and xpath=\'//div[@id="PlayerCount"]/p[1]/span\'&format=json'; 
    var yql = 'http://query.yahooapis.com/v1/public/yql?q='; 
    var queryURL = yql+encodeURI(query); 
    var jsonString = UrlFetchApp.fetch(queryURL).getContentText(); 
    var json = Utilities.jsonParse(jsonString); 
    var palyerCount = json.query.results.span; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    l = sheet.getLastRow(); 
    sheet.getRange(l+1, 1, 1, 3).setValues([[new Date(), palyerCount, 'people']]); 
} 

참고 :

이 스크립트는 테스트 제대로 작동합니다. 다음은 스프레드 시트에서 작동하도록하기위한 단계입니다.

  1. 을 선택한 다음, 비어있는 새 스프레드 시트를 작성하고 '도구'메뉴를 클릭하여 이름
  2. 열기 스크립트 편집기으로 저장 '스크립트 편집기를 ...'.
  3. 복사 다음 스크립트
  4. 저장 스크립트
  5. 함수 콤보 상자의 기능 retreiveOnlineUsers를 선택하고 "실행"을 클릭을 붙여, 이것은 당신의 시트에서 행을 채 웁니다.
  6. 이제 time driven triggers을 실행하도록이 스크립트를 예약 할 수 있습니다.
+0

나는 당신이 이것을보고 좋은 일을 할 수있는 몇 가지 조치를 취할 수 있다면, 당신을 어떻게 세우는 지 알아 내려고하고있다. 나는 그것을 알아 내면 내 메시지를 업데이트 할 것이다. – Aaron

+1

답변을 업데이트했습니다. 더 이상 간단하게 만들 수 없으므로 기본 사항을 이해하기 위해 튜토리얼에 시간을 좀주십시오. –

+0

업데이트 주셔서 감사합니다. 정의 : "정규식 구문 분석을 피하기 위해 Apps Script와 함께 YQL을 사용합니다." ? – Aaron

관련 문제