다양한 MIME 유형의 원시 텍스트 콘텐츠를 반환합니다.
스크립트가 웹 앱으로 게시되면 스크립트의 URL에 요청이 이루어질 때마다 콜백 함수 doGet 및 doPost이 실행됩니다. HTML 서비스로 만든 사용자 인터페이스 객체를 반환하는 대신 콘텐츠 서비스는 원시 텍스트 콘텐츠를 반환할 수 있습니다. GET 및 POST 요청에 응답하고 다양한 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);
}
코드는 다음 구성요소로 구성됩니다. URL Fetch 서비스를 사용하여 원본 XKCD RSS 피드를 가져옵니다. 표준 JavaScript 정규 표현식을 사용하여 대체합니다. 수정된 피드를 TextOutput 객체로 래핑하고 MIME 유형을 RSS로 설정합니다.
실제로 작동하는 것을 확인하려면 스크립트를 웹 앱으로 게시하고 익명 액세스를 허용하세요. RSS 리더에 서비스의 URL을 추가하거나 웹브라우저에서 직접 방문합니다.
스크립트에서 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 매개변수를 추가할 수 있습니다. start 및 end 매개변수는 표준 Unix 에포크의 시간 범위를 지정합니다.
curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000
서비스는 해당 범위에서 일정이 열려 있는지 여부를 보고하는 JSON을 반환합니다.
{"available":true}
웹페이지에서 JSONP 제공
약간의 변경을 통해 JSON 서비스가 브라우저의 JavaScript에서 호출되는 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);
}
브라우저에서 이 서비스를 호출하려면 서비스 URL로 설정된 src 속성과 추가 prefix 매개변수가 있는 스크립트 태그를 만듭니다. 서비스에서 반환된 값으로 호출되는 클라이언트 측 JavaScript의 함수 이름입니다.
<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>
이 예에서는 브라우저의 기본 alert 함수를 접두사로 사용하여 서비스 출력이 포함된 메시지 상자를 브라우저에 표시합니다. 반환된 JavaScript 코드는 다음과 같습니다.
alert({"available":true})
JSONP를 사용할 때는 주의하세요. 누구나 웹페이지에 스크립트 태그를 삽입할 수 있으므로 악성 웹사이트를 방문할 때 스크립트를 실행하도록 속일 수 있으며, 이렇게 하면 반환된 데이터를 캡처할 수 있습니다. JSONP 스크립트가 읽기 전용이며 민감하지 않은 정보만 반환하는지 확인합니다.
리디렉션
보안을 위해 콘텐츠 서비스에서 반환된 콘텐츠는 script.googleusercontent.com의 일회성 URL로 리디렉션됩니다. 콘텐츠 서비스를 사용하여 다른 애플리케이션에 데이터를 반환하는 경우 HTTP 클라이언트가 리디렉션을 따르도록 구성되어 있는지 확인하세요. curl 명령줄 유틸리티의 경우 -L 플래그를 추가합니다. 자세한 내용은 HTTP 클라이언트 문서를 참고하세요.