스크립트가 웹 앱으로 게시되면 이 특수 콜백 함수는
doGet()
및 doPost()
는 스크립트의
URL입니다. API로 만든 사용자 인터페이스 객체를 반환하는 대신
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);
}
복잡해 보일 수 있지만 간단한 부분으로 나눠집니다. 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입니다. start
및 end
매개변수는 확인할 기간을 제공합니다.
표준 유닉스에 지정됩니다.
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 클라이언트 문서를 확인하세요.
이 동작을 사용 설정하는 방법에 대한 정보를
확인할 수 있습니다