스크립트에서 제공할 수 있는 HtmlOutput
객체 보안 고려사항으로 인해
스크립트는 브라우저에 HTML을 직접 반환할 수 없습니다. 대신 데이터를 정리하여
악의적인 작업을 수행할 수 없습니다. 다음과 같이 정리된 HTML을 반환할 수 있습니다.
function doGet() { return HtmlService.createHtmlOutput('<b>Hello, world!</b>'); }
HtmlOutput
의 코드에는 삽입된 JavaScript와 CSS가 포함될 수 있습니다. (이는 표준
클라이언트 측 JavaScript에서 클라이언트 측 JavaScript가 아니라 DOM을 조작하는 경우). 이러한 모든 콘텐츠는
iframe을 사용하여 샌드박스 처리됨
샌드박스 처리를 참조하세요. 자세한 내용은 HTML 서비스의 제한사항 가이드를 참고하세요.메서드
메서드 | 반환 유형 | 간략한 설명 |
---|---|---|
addMetaTag(name, content) | HtmlOutput | 페이지에 메타 태그를 추가합니다. |
append(addedContent) | HtmlOutput | 이 HtmlOutput 의 콘텐츠에 새 콘텐츠를 추가합니다. |
appendUntrusted(addedContent) | HtmlOutput | 문맥 이스케이프를 사용하여 이 HtmlOutput 의 콘텐츠에 새 콘텐츠를 추가합니다. |
asTemplate() | HtmlTemplate | 이 HtmlOutput 에서 지원하는 HtmlTemplate 를 반환합니다. |
clear() | HtmlOutput | 현재 콘텐츠를 지웁니다. |
getAs(contentType) | Blob | 이 객체 내의 데이터를 지정된 콘텐츠 유형으로 변환된 blob으로 반환합니다. |
getBlob() | Blob | 이 객체 내의 데이터를 blob으로 반환합니다. |
getContent() | String | 이 HtmlOutput 의 콘텐츠를 가져옵니다. |
getFaviconUrl() | String | setFaviconUrl(iconUrl) 를 호출하여 페이지에 추가된 파비콘 링크 태그의 URL을 가져옵니다. |
getHeight() | Integer | Google에 있는 맞춤 대화상자의 초기 높이를 가져옵니다. Docs, Sheets, Forms |
getMetaTags() | HtmlOutputMetaTag[] | addMetaTag(name, content) 를 호출하여 페이지에 추가된 메타 태그를 나타내는 객체의 배열을 가져옵니다. |
getTitle() | String | 출력 페이지의 제목을 가져옵니다. |
getWidth() | Integer | Google에 있는 맞춤 대화상자의 초기 너비를 가져옵니다. Docs, Sheets, Forms |
setContent(content) | HtmlOutput | 이 HtmlOutput 의 콘텐츠를 설정합니다. |
setFaviconUrl(iconUrl) | HtmlOutput | 페이지에 파비콘의 링크 태그를 추가합니다. |
setHeight(height) | HtmlOutput | Google에서 맞춤 대화상자의 초기 높이를 설정합니다. Docs, Sheets, Forms |
setSandboxMode(mode) | HtmlOutput | 이 메서드는 이제 아무런 효과가 없습니다. 이전에는 클라이언트 측 스크립트에 사용되는 sandbox
mode 를 설정했습니다. |
setTitle(title) | HtmlOutput | 출력 페이지의 제목을 설정합니다. |
setWidth(width) | HtmlOutput | Google에서 맞춤 대화상자의 초기 너비를 설정합니다. Docs, Sheets, Forms |
setXFrameOptionsMode(mode) | HtmlOutput | 클릭재킹을 제어하는 페이지의 X-Frame-Options 헤더 상태를 설정합니다.
방지할 수 있습니다 |
자세한 문서
addMetaTag(name, content)
페이지에 메타 태그를 추가합니다. Apps Script HTML 파일에 직접 포함된 메타 태그는 무시됩니다. 다음과 같은 메타 태그만 허용됩니다.
<meta name="apple-mobile-web-app-capable" content="..."/> <meta name="google-site-verification" content="..."/> <meta name="mobile-web-app-capable" content="..."/> <meta name="viewport" content="..."/>
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.addMetaTag('viewport', 'width=device-width, initial-scale=1');
매개변수
이름 | 유형 | 설명 |
---|---|---|
name | String | 메타 태그의 이름 속성 값입니다. |
content | String | 메타 태그의 content 속성 값입니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
append(addedContent)
이 HtmlOutput
의 콘텐츠에 새 콘텐츠를 추가합니다. 이 옵션은
이스케이프 처리되지 않았기 때문에 신뢰할 수 있는 소스를 찾습니다.
// Log "<b>Hello, world!</b><p>Hello again, world.</p>" var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.append('<p>Hello again, world.</p>'); Logger.log(output.getContent());
매개변수
이름 | 유형 | 설명 |
---|---|---|
addedContent | String | 추가할 콘텐츠입니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
생성 값
Error
: HTML 형식이 잘못된 경우
참고 항목
appendUntrusted(addedContent)
문맥 이스케이프를 사용하여 이 HtmlOutput
의 콘텐츠에 새 콘텐츠를 추가합니다.
이 메서드는 HtmlOutput
의 현재 상태에 따라 콘텐츠를 올바르게 이스케이프합니다.
그렇게 하면 마크업이나 부작용이 없는 안전한 문자열이 됩니다. 를 사용하는 대신
를 추가하는 것이 좋습니다.
추가한 콘텐츠나 마크업이 교차 사이트 스크립팅 (XSS) 버그를 실수로 허용함
예기치 않은 코드가 실행됩니다.
// Log "<b>Hello, world!</b><p>Hello again, world.</p>" var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.appendUntrusted('<p>Hello again, world.</p>'); Logger.log(output.getContent());
매개변수
이름 | 유형 | 설명 |
---|---|---|
addedContent | String | 추가할 콘텐츠입니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
생성 값
Error
: HTML 형식이 매우 잘못된 경우
참고 항목
asTemplate()
이 HtmlOutput
에서 지원하는 HtmlTemplate
를 반환합니다. 이 메서드는
템플릿을 점진적으로 만들 수 있습니다 향후 HtmlOutput
을(를) 변경하면 콘텐츠에 영향을 줍니다.
HtmlTemplate
도 마찬가지입니다.
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); var template = output.asTemplate();
리턴
HtmlTemplate
- 새 HtmlTemplate
입니다.
clear()
현재 콘텐츠를 지웁니다.
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.clear();
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
getAs(contentType)
이 객체 내의 데이터를 지정된 콘텐츠 유형으로 변환된 blob으로 반환합니다. 이 메서드는 파일 이름에 적절한 확장자를 추가합니다(예: 'myfile.pdf'). 하지만 파일 이름에서 마지막 마침표 뒤에 오는 부분 (있는 경우)이 기존 교체해야 합니다. 따라서 'ShoppingList.12.25.2014' 위 이름이 아래와 같이 변경됩니다. 'ShoppingList.12.25.pdf'
전환수의 일일 할당량을 보려면 Google '서비스'로 이동합니다. 새로 생성된 Google Workspace 도메인에는 일시적으로 더 엄격한 정책이 적용될 수 있습니다. 할당량도 제공합니다
매개변수
이름 | 유형 | 설명 |
---|---|---|
contentType | String | 변환할 MIME 유형입니다. 대부분의 blob에서 'application/pdf' 는 다음과 같습니다.
유일하게 유효한 옵션입니다. BMP, GIF, JPEG, PNG 형식의 이미지인 경우 'image/bmp' , 'image/gif' , 'image/jpeg' , 'image/png' 중 어느 것이든 해당됩니다.
유효한지 확인합니다. Google Docs 문서의 경우 'text/markdown' 도 유효합니다. |
리턴
Blob
- blob 형식의 데이터입니다.
getBlob()
getContent()
이 HtmlOutput
의 콘텐츠를 가져옵니다.
// Log "<b>Hello, world!</b>" var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); Logger.log(output.getContent());
리턴
String
- 게재되는 콘텐츠입니다.
getFaviconUrl()
setFaviconUrl(iconUrl)
를 호출하여 페이지에 추가된 파비콘 링크 태그의 URL을 가져옵니다. Apps Script HTML 파일에 직접 포함된 파비콘 링크 태그는
무시됩니다.
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setFaviconUrl('http://www.example.com/image.png'); Logger.log(output.getFaviconUrl());
리턴
String
- 파비콘 이미지의 URL입니다.
getHeight()
Google에 있는 맞춤 대화상자의 초기 높이를 가져옵니다.
Docs, Sheets, Forms 대신 HtmlOutput
가 웹 앱으로 게시된 경우
메서드가 null
를 반환합니다. 이미 열려 있는 대화상자의 크기를 조정하려면 를 호출합니다.
클라이언트 측 코드의 google.script.host.setHeight(height)
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setHeight(200); Logger.log(output.getHeight());
리턴
Integer
- 높이(픽셀)입니다.
getMetaTags()
addMetaTag(name, content)
를 호출하여 페이지에 추가된 메타 태그를 나타내는 객체의 배열을 가져옵니다. Apps Script HTML 파일에 직접 포함된 메타 태그는
무시됩니다.
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.addMetaTag('viewport', 'width=device-width, initial-scale=1'); var tags = output.getMetaTags(); Logger.log('<meta name="%s" content="%s"/>', tags[0].getName(), tags[0].getContent());
리턴
HtmlOutputMetaTag[]
- addMetaTag(name, content)
를 호출하여 페이지에 추가된 메타 태그를 나타내는 객체의 배열입니다.
getTitle()
출력 페이지의 제목을 가져옵니다. <title> HTML 요소는 무시됩니다.
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); Logger.log(output.getTitle());
리턴
String
- 페이지 제목입니다.
getWidth()
Google에 있는 맞춤 대화상자의 초기 너비를 가져옵니다.
Docs, Sheets, Forms 대신 HtmlOutput
가 웹 앱으로 게시된 경우
메서드가 null
를 반환합니다. 이미 열려 있는 대화상자의 크기를 조정하려면 를 호출합니다.
클라이언트 측 코드의 google.script.host.setWidth(width)
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setWidth(200); Logger.log(output.getWidth());
리턴
Integer
- 너비(픽셀)입니다.
setContent(content)
이 HtmlOutput
의 콘텐츠를 설정합니다.
var output = HtmlService.createHtmlOutput(); output.setContent('<b>Hello, world!</b>');
매개변수
이름 | 유형 | 설명 |
---|---|---|
content | String | 게재할 콘텐츠입니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
생성 값
Error
: HTML 형식이 잘못된 경우
setFaviconUrl(iconUrl)
페이지에 파비콘의 링크 태그를 추가합니다. 앱에 직접 포함된 파비콘 링크 태그 스크립트 HTML 파일은 무시됩니다.
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setFaviconUrl('http://www.example.com/image.png');
매개변수
이름 | 유형 | 설명 |
---|---|---|
iconUrl | String | 파비콘 이미지의 URL(이미지를 나타내는 이미지 확장 포함) 있습니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
setHeight(height)
Google에서 맞춤 대화상자의 초기 높이를 설정합니다.
Docs, Sheets, Forms 대신 HtmlOutput
가 웹 앱으로 게시된 경우
아무 효과도 없습니다. 이미 열려 있는 대화상자의 크기를 조정하려면 를 호출합니다.
클라이언트 측 코드의 google.script.host.setHeight(height)
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setHeight(200);
매개변수
이름 | 유형 | 설명 |
---|---|---|
height | Integer | 픽셀 단위의 새로운 높이입니다. null 는 기본값이 됩니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
setSandboxMode(mode)
이 메서드는 이제 아무런 효과가 없습니다. 이전에는 클라이언트 측 스크립트에 사용되는 sandbox
mode
를 설정했습니다. 사용자에게 악성 HTML이 표시되거나
자바스크립트, HTML 서비스에서 제공되는 클라이언트 측 코드는
코드에 제한을 둡니다 원래 이 방법을 사용하면 스크립트 작성자가
서로 다른 버전의 샌드박스를 지원하지만 이제 모든 스크립트에서 IFRAME
모드를 사용합니다.
어떤 샌드박스 모드가 설정되어 있는지와 상관없이 자세한 내용은 HTML 서비스의 제한사항 가이드를 참고하세요.
IFRAME
모드는 다른 샌드박스 모드보다 훨씬 적은 제한사항을 적용합니다.
가장 빠르게 실행되지만 Internet Explorer를 비롯한 일부 오래된 브라우저에서 전혀 작동하지 않음
9. 샌드박스 모드는 google.script.sandbox.mode
를 검사하여 클라이언트 측 스크립트에서 읽을 수 있습니다. 이 속성은 클라이언트의 실제 모드를 반환하므로
요청된 모드가 지원되지 않는 경우 서버에서 요청된 모드와 다를 수 있습니다.
를 입력합니다.
<!-- Read the sandbox mode (in a client-side script). --> <script> alert(google.script.sandbox.mode); </script>
매개변수
이름 | 유형 | 설명 |
---|---|---|
mode | SandboxMode | 사용할 샌드박스 모드입니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
setTitle(title)
출력 페이지의 제목을 설정합니다. 웹 앱의 경우 전체 페이지의 제목이지만
Google Sheets에 표시된 HtmlOutput
의 경우 대화상자 제목입니다.
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setTitle('My First Page');
매개변수
이름 | 유형 | 설명 |
---|---|---|
title | String | 새 제목입니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
setWidth(width)
Google에서 맞춤 대화상자의 초기 너비를 설정합니다.
Docs, Sheets, Forms 대신 HtmlOutput
가 웹 앱으로 게시된 경우
아무 효과도 없습니다. 이미 열려 있는 대화상자의 크기를 조정하려면 를 호출합니다.
클라이언트 측 코드의 google.script.host.setWidth(width)
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setWidth(200);
매개변수
이름 | 유형 | 설명 |
---|---|---|
width | Integer | 새로운 너비(픽셀)입니다. null 는 기본값이 됩니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.
setXFrameOptionsMode(mode)
클릭재킹을 제어하는 페이지의 X-Frame-Options
헤더 상태를 설정합니다.
방지할 수 있습니다
XFrameOptionsMode.ALLOWALL
를 설정하면 모든 사이트에서 페이지를 iframe할 수 있으므로
개발자는 클릭재킹에 대한 자체적인 보호 조치를 구현해야 합니다.
스크립트에서 X-Frame-Options
모드를 설정하지 않으면 Apps Script에서 기본값으로 XFrameOptionsMode.DEFAULT
모드를 사용합니다.
// Serve HTML with no X-Frame-Options header (in Apps Script server-side code). var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>'); output.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
매개변수
이름 | 유형 | 설명 |
---|---|---|
mode | XFrameOptionsMode | 설정할 XFrame 옵션 모드입니다. |
리턴
HtmlOutput
- 체이닝을 위한 출력입니다.