एचटीएमएल सेवा: पाबंदियां

उपयोगकर्ताओं को नुकसान पहुंचाने वाले एचटीएमएल या JavaScript से बचाने के लिए, Apps Script, एचटीएमएल-सेवा वेब ऐप्लिकेशन को सैंडबॉक्स करने या Google Docs, Sheets, और Forms के लिए कस्टम उपयोगकर्ता इंटरफ़ेस को सैंडबॉक्स करने के लिए iframe का इस्तेमाल करती है. (एचटीएमएल सेवा अन्य स्थितियों में सैंडबॉक्स का इस्तेमाल नहीं करती, जैसे कि ईमेल का मुख्य हिस्सा तैयार करना.) सैंडबॉक्स, क्लाइंट-साइड कोड पर कुछ पाबंदियां लागू करता है.

सैंडबॉक्स मोड

IFRAME को छोड़कर, सभी सैंडबॉक्स मोड की सुविधा अब बंद कर दी गई है. पुराने सैंडबॉक्स मोड का इस्तेमाल करने वाले ऐप्लिकेशन अब अपने-आप नए IFRAME मोड का इस्तेमाल करते हैं. अगर आपके पास ऐसी स्क्रिप्ट हैं जिन्हें पुराने मोड (NATIVE और EMULATED) का इस्तेमाल करके बनाया गया था, तो आपको माइग्रेशन निर्देशों का पालन करना चाहिए, ताकि यह पक्का हो सके कि वे IFRAME मोड में ठीक से काम करें.

अब कॉल करने पर, setSandboxMode तरीके का कोई असर नहीं पड़ता.

Iframe मोड में पाबंदियां

IFRAME सैंडबॉक्स मोड, HTML5 में iframe सैंडबॉक्सिंग सुविधा पर आधारित है. इसमें ये कीवर्ड इस्तेमाल किए गए हैं:

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> टैग का इस्तेमाल करके भी, इस एट्रिब्यूट को बदला जा सकता है:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <div>
     <a href="http://google.com">Click Me!</a>
   </div>
 </body>
</html>

चालू कॉन्टेंट के लिए एचटीटीपीएस ज़रूरी है

"चालू" कॉन्टेंट, जैसे कि स्क्रिप्ट, बाहरी स्टाइलशीट, और XmlHttpRequests को एचटीटीपीएस पर लोड किया जाना चाहिए, न कि एचटीटीपी पर.