콘텐츠 서비스

스크립트가 웹 앱으로 게시되면 이 특수 콜백 함수는 doGet()doPost()는 스크립트의 URL입니다. API로 만든 사용자 인터페이스 객체를 반환하는 대신 HTML 서비스를 통해 콘텐츠 서비스를 사용하여 원시 데이터를 텍스트 콘텐츠입니다. 이를 통해 '서비스' 역할을 하는 스크립트를 작성하고 GETPOST 요청에 응답하고 다양한 MIME 유형의 데이터를 제공합니다.

기본 사항

다음은 콘텐츠 서비스의 간단한 예입니다.

function doGet() {
  return ContentService.createTextOutput('Hello, world!');
}

스크립트를 웹 앱으로 배포 사용자 인터페이스를 제공할 때와 동일한 단계를 사용합니다. 날짜 스크립트의 URL에 GET 요청이 이루어지면 Hello, world! 텍스트는 다음과 같습니다. 반환합니다. 이 서비스는 일반 텍스트 외에도 ATOM 반환도 지원합니다. CSV, iCal, JavaScript, JSON, RSS, vCard 및 XML 콘텐츠.

RSS 피드 제공

RSS 피드 필터링과 같이 좀 더 복잡한 방법을 시도해 보겠습니다. 이 XKCD 만화는 재미있지만 전부 볼 수는 없음 농담입니다. 모바일 브라우저에서는 마우스를 올릴 수 없으므로 작동하지 않습니다.

중요 단어를 피드에 추가하도록 피드를 수정하려 한다고 가정해 보겠습니다. 마우스를 가져가는 대신 약간 아래로 스크롤하여 확인할 수 있습니다. 그 것이 휴대기기에서는 잘 작동합니다. 코드는 다음과 같습니다.

function doGet() {
  var feed =  UrlFetchApp.fetch('http://xkcd.com/rss.xml').getContentText();
  feed = feed.replace(
    /(<img.*?alt="(.*?)".*?>)/g,
    '$1' + new Array(10).join('<br />') + '$2');
  return ContentService.createTextOutput(feed)
    .setMimeType(ContentService.MimeType.RSS);
}

복잡해 보일 수 있지만 간단한 부분으로 나눠집니다. Google은 URL 가져오기 서비스로 원본 가져오기 XKCD RSS 피드 그런 다음 표준 자바스크립트 정규 표현식을 사용하여 도움이 될 수 있습니다. 마지막으로 수정된 피드를 TextOutput 객체를 만들고 MIME를 설정합니다. RSS로 변환할 수 있습니다.

실제 동작을 보려면 스크립트를 웹 앱으로 게시하고 익명 액세스 (RSS 리더는 익명 액세스로 방문하므로 사용자). 그런 다음 기존 RSS 피드가 아닌 서비스의 URL을 RSS에 추가합니다. 웹 브라우저에서 직접 방문하세요. 작업이 끝났습니다.

스크립트에서 JSON 제공

콘텐츠 서비스로 무엇을 할 수 있나요? 다른 서비스에 JSON을 제공하면 스크립트, 기타 웹사이트 및 서비스에서 사용할 수 있습니다. 다음은 인코더-디코더 아키텍처를 이를 통해 캘린더 시간대가 특정 시간대에 열려 있는지 확인할 수 있습니다. 있습니다.

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(JSON.stringify(result))
    .setMimeType(ContentService.MimeType.JSON);
}

이전과 마찬가지로 익명의 웹 앱으로 게시하여 작동합니다. 이 경우 새 서비스의 사용자는 URL 매개변수를 서비스 URL입니다. startend 매개변수는 확인할 기간을 제공합니다. 표준 유닉스에 지정됩니다.

curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000

이 서비스는 확인할 수 있습니다.

{"available":true}

웹페이지에 JSONP 제공

조금만 변경하면 JSON 서비스가 JSONP: 할 수 있습니다. 새 스크립트는 다음과 같습니다.

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(
    request.parameters.prefix + '(' + JSON.stringify(result) + ')')
    .setMimeType(ContentService.MimeType.JAVASCRIPT);
}

브라우저에서 이 서비스를 호출하려면 src 속성이 있는 스크립트 태그를 만드세요. 은 prefix라는 추가 매개변수가 있는 서비스의 URL입니다. 이 는 클라이언트 측 JavaScript에서 호출될 함수의 이름입니다. 를 서비스에서 반환한 값으로 바꿉니다.

<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>

이 예에서는 브라우저에 서비스 출력이 포함된 메시지 상자를 표시합니다. 브라우저의 내장 alert() 함수를 접두사로 지정하기 때문입니다. 이 반환되는 JavaScript 코드는 다음과 같습니다.

alert({"available":true})

리디렉션

보안상의 이유로 콘텐츠 서비스에서 반환하는 콘텐츠는 script.google.com, 대신 다음 위치에서 일회성 URL로 리디렉션됩니다. script.googleusercontent.com입니다. 즉, 콘텐츠 서비스를 사용하면 데이터를 다른 애플리케이션에 반환하려면 HTTP 클라이언트가 자동으로 구성되어야 합니다. 예를 들어, cURL 명령줄 유틸리티에서 플래그 -L를 추가합니다. 자세한 내용은 HTTP 클라이언트 문서를 확인하세요. 이 동작을 사용 설정하는 방법에 대한 정보를 확인할 수 있습니다