خدمة HTML: القيود
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
لحماية المستخدمين من عرض محتوى HTML أو JavaScript ضار، تستخدم خدمة "نصوص برمجية للتطبيقات" إطارات iframe لتوفير بيئة معزولة لتطبيقات الويب التي تستخدم خدمة HTML أو واجهات المستخدم المخصّصة في "مستندات Google" و"جداول بيانات Google" و"نماذج Google". (لا تستخدم خدمة HTML وضع الحماية في حالات أخرى، مثل إنشاء نص رسالة إلكترونية). تفرض البيئة التجريبية قيودًا على الرموز البرمجية من جهة العميل.
وضع الحماية
تم إيقاف جميع أوضاع وضع الحماية نهائيًا باستثناء IFRAME
. تستخدم التطبيقات التي تستخدم أوضاعًا قديمة من وضع الحماية IFRAME
تلقائيًا. إذا كانت لديك نصوص برمجية تم تطويرها باستخدام الوضعَين القديمَين (NATIVE
وEMULATED
)، عليك اتّباع تعليمات نقل البيانات لضمان عملها بشكل صحيح في الوضع IFRAME
.
لم يعُد للطريقة setSandboxMode
أي تأثير عند استدعائها.
القيود في وضع IFRAME
يستند وضع الحماية IFRAME
إلى ميزة
وضع الحماية في إطارات iframe
في HTML5، وذلك باستخدام الكلمات الرئيسية التالية:
allow-same-origin
allow-forms
allow-scripts
allow-popups
allow-downloads
allow-modals
allow-popups-to-escape-sandbox
-
allow-top-navigation-by-user-activation
: يتم ضبط هذه السمة فقط لمشاريع النصوص البرمجية المستقلة.
يتم حظر الكلمة الرئيسية allow-top-navigation
التي تسمح للمحتوى بالتنقّل في سياق التصفّح ذي المستوى الأعلى، ولا يتم ضبطها كسمة في وضع الحماية. إذا كنت بحاجة إلى إعادة توجيه البرنامج النصي، أضِف رابطًا أو زرًا ليتمكّن المستخدم من اتّخاذ إجراء بدلاً من ذلك.
ضبط سمة هدف الرابط
في الوضع IFRAME
، عليك ضبط سمة هدف الرابط على _top
أو _blank
:
Code.js
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
top.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
يمكنك أيضًا إلغاء هذه السمة باستخدام العلامة <base>
ضمن قسم head
في صفحة الويب الحاضنة:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
يجب استخدام HTTPS للمحتوى النشط
يجب تحميل المحتوى النشط، مثل النصوص البرمجية وأوراق الأنماط الخارجية وXmlHttpRequests، عبر HTTPS وليس HTTP.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eApps Script utilizes iframes to sandbox HTML service web apps and custom interfaces for Google products, protecting users from malicious code.\u003c/p\u003e\n"],["\u003cp\u003eAll sandbox modes except \u003ccode\u003eIFRAME\u003c/code\u003e are sunset; existing scripts using older modes automatically transition to \u003ccode\u003eIFRAME\u003c/code\u003e, and developers should migrate their code accordingly.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eIFRAME\u003c/code\u003e sandbox mode, based on HTML5 iframe sandboxing, imposes limitations on client-side code with specific allowances and restrictions.\u003c/p\u003e\n"],["\u003cp\u003eTo redirect users in \u003ccode\u003eIFRAME\u003c/code\u003e mode, use links or buttons with \u003ccode\u003etarget="_top"\u003c/code\u003e or \u003ccode\u003e_blank"\u003c/code\u003e or utilize the \u003ccode\u003e<base>\u003c/code\u003e tag to override this behavior.\u003c/p\u003e\n"],["\u003cp\u003eActive content like scripts and external stylesheets within the sandboxed environment must be loaded over HTTPS to ensure security.\u003c/p\u003e\n"]]],[],null,["# HTML Service: Restrictions\n\nTo protect users from being served malicious HTML or JavaScript, Apps Script\nuses iframes to sandbox HTML-service web apps or custom user\ninterfaces for Google Docs, Sheets, and Forms. (The HTML service does not use a\nsandbox in other situations, like generating the body of an email.) The sandbox\nimposes limitations on client-side code.\n\nSandbox Mode\n------------\n\nAll sandbox modes are now sunset except for `IFRAME`. Apps using older sandbox\nmodes now use the newer `IFRAME` mode automatically. If you have scripts that\nwere developed using the older modes (`NATIVE` and `EMULATED`), you should\nfollow the [migration instructions](/apps-script/migration/iframe) to ensure\nthey function properly under the `IFRAME` mode.\n\nThe [`setSandboxMode`](/apps-script/reference/html/html-output#setSandboxMode(SandboxMode))\nmethod now has no effect when called.\n\nRestrictions in IFRAME mode\n---------------------------\n\nThe `IFRAME` sandbox mode is based on the\n[iframe sandboxing](https://html.spec.whatwg.org/#attr-iframe-sandbox) feature\nin HTML5, using the following keywords:\n\n- `allow-same-origin`\n- `allow-forms`\n- `allow-scripts`\n- `allow-popups`\n- `allow-downloads`\n- `allow-modals`\n- `allow-popups-to-escape-sandbox`\n- `allow-top-navigation-by-user-activation` - This attribute is only set for [stand-alone script projects](/apps-script/guides/standalone).\n\nThe `allow-top-navigation` keyword, which allows the content to navigate its\ntop-level browsing context, is restricted and not set as an attribute in the\nsandbox. If you need to redirect your script, add a link or a button for the\nuser to take action on instead.\n\n### Setting the link target attribute\n\nIn the `IFRAME` mode you need to set the link target attribute to either\n`_top` or `_blank`: \n\n### Code.js\n\n function doGet() {\n var template = HtmlService.createTemplateFromFile('top');\n return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);\n }\n\n### top.html\n\n \u003c!DOCTYPE html\u003e\n \u003chtml\u003e\n \u003cbody\u003e\n \u003cdiv\u003e\n \u003ca href=\"http://google.com\" target=\"_top\"\u003eClick Me!\u003c/a\u003e\n \u003c/div\u003e\n \u003c/body\u003e\n \u003c/html\u003e\n\nYou can also override this attribute using the `\u003cbase\u003e` tag within the head\nsection of the enclosing web page: \n\n \u003c!DOCTYPE html\u003e\n \u003chtml\u003e\n \u003chead\u003e\n \u003cbase target=\"_top\"\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003cdiv\u003e\n \u003ca href=\"http://google.com\"\u003eClick Me!\u003c/a\u003e\n \u003c/div\u003e\n \u003c/body\u003e\n \u003c/html\u003e\n\n### HTTPS required for active content\n\n[\"Active\" content](https://developer.mozilla.org/en-US/docs/Security/MixedContent#Mixed_active_content)\nlike scripts, external stylesheets, and XmlHttpRequests must be loaded over\nHTTPS, not HTTP."]]