اگر یک رابط کاربری برای یک اسکریپت بسازید، می توانید اسکریپت را به عنوان یک برنامه وب منتشر کنید. به عنوان مثال، اسکریپتی که به کاربران اجازه می دهد قرارهای ملاقات با اعضای یک تیم پشتیبانی را برنامه ریزی کنند، بهتر است به عنوان یک برنامه وب ارائه شود تا کاربران بتوانند مستقیماً از مرورگرهای خود به آن دسترسی داشته باشند.
هم اسکریپت های مستقل و هم اسکریپت های مقید به Google Workspace برنامهها را میتوان به برنامههای وب تبدیل کرد، تا زمانی که شرایط زیر را برآورده کنند.
الزامات برنامه های وب
یک اسکریپت می تواند به عنوان یک برنامه وب منتشر شود در صورتی که شرایط زیر را داشته باشد:
- این شامل یک تابع
doGet(e)
یاdoPost(e)
است. - تابع یک شی
HtmlOutput
سرویس HTML یا یک شیTextOutput
سرویس محتوا را برمی گرداند.
درخواست پارامترها
هنگامی که کاربر از یک برنامه بازدید می کند یا برنامه ای درخواست HTTP GET
را برای برنامه ارسال می کند، Apps Script تابع doGet(e)
را اجرا می کند. وقتی برنامه ای درخواست HTTP POST
برای برنامه ارسال می کند، Apps Script به جای آن doPost(e)
اجرا می کند. در هر دو مورد، آرگومان e
یک پارامتر رویداد را نشان میدهد که میتواند حاوی اطلاعاتی درباره هر پارامتر درخواستی باشد. ساختار شی رویداد در جدول زیر نشان داده شده است:
فیلدها | |
---|---|
e.queryString | مقدار بخش رشته پرس و جو از URL، یا اگر رشته پرس و جو مشخص نشده باشد، name=alice&n=1&n=2 |
e.parameter | یک شی از جفتهای کلید/مقدار که با پارامترهای درخواست مطابقت دارند. فقط اولین مقدار برای پارامترهایی که چندین مقدار دارند برگردانده می شود. {"name": "alice", "n": "1"} |
e.parameters | یک شی شبیه به {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo | مسیر URL بعد از |
e.contextPath | استفاده نمی شود، همیشه رشته خالی است. |
e.contentLength | طول بدنه درخواست برای درخواستهای POST یا 332 |
e.postData.length | همان 332 |
e.postData.type | نوع MIME بدنه POST text/csv |
e.postData.contents | متن محتوای بدنه POST Alice,21 |
e.postData.name | همیشه مقدار "postData" باشد postData |
به عنوان مثال، میتوانید پارامترهایی مانند username
و age
را مانند شکل زیر به URL ارسال کنید:
https://script.google.com/.../exec?username=jsmith&age=21
سپس، می توانید پارامترهای زیر را نمایش دهید:
function doGet(e) {
var params = JSON.stringify(e);
return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}
در مثال بالا، doGet(e)
خروجی زیر را برمی گرداند:
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
یک اسکریپت را به عنوان یک برنامه وب اجرا کنید
برای استقرار یک اسکریپت به عنوان یک برنامه وب، این مراحل را دنبال کنید:
- در سمت راست بالای پروژه اسکریپت، روی Deploy > New Deployment کلیک کنید.
- در کنار «انتخاب نوع»، روی فعال کردن انواع استقرار > برنامه وب کلیک کنید.
- اطلاعات مربوط به برنامه وب خود را در فیلدهای زیر "پیکربندی استقرار" وارد کنید.
- روی Deploy کلیک کنید.
میتوانید URL برنامه وب را با کسانی که میخواهید از برنامه شما استفاده کنند به اشتراک بگذارید، مشروط بر اینکه به آنها اجازه دسترسی داده باشید.
استقرار یک برنامه وب را آزمایش کنید
برای آزمایش اسکریپت خود به عنوان یک برنامه وب، مراحل زیر را دنبال کنید:
- در سمت راست بالای پروژه اسکریپت، روی Deploy > Test Deployments کلیک کنید.
- در کنار «انتخاب نوع»، روی فعال کردن انواع استقرار > برنامه وب کلیک کنید.
- در زیر URL برنامه وب، روی کپی کلیک کنید.
URL را در مرورگر خود قرار دهید و برنامه وب خود را آزمایش کنید.
این URL به
/dev
ختم می شود و فقط برای کاربرانی که دسترسی ویرایش به اسکریپت دارند می توانند به آن دسترسی داشته باشند. این نمونه از برنامه همیشه آخرین کد ذخیره شده را اجرا می کند و فقط برای آزمایش در حین توسعه در نظر گرفته شده است.
مجوزها
مجوزهای یک برنامه وب بسته به نحوه اجرای برنامه متفاوت است:
- برنامه را مانند من اجرا کنید — در این مورد، اسکریپت همیشه مانند شما، صاحب اسکریپت اجرا می شود، مهم نیست چه کسی به برنامه وب دسترسی دارد.
- برنامه را به عنوان کاربر در حال دسترسی به برنامه وب اجرا کنید — در این مورد، اسکریپت تحت هویت کاربر فعال با استفاده از برنامه وب اجرا می شود. این رویکرد مجوز باعث می شود که برنامه وب ایمیل مالک اسکریپت را زمانی که کاربر اجازه دسترسی را می دهد نشان دهد.
برنامه وب خود را در Google Sites جاسازی کنید
برای جاسازی یک برنامه وب در Google Sites، ابتدا باید آن را مستقر کنید . شما همچنین به URL Deployed از گفتگوی Deploy
نیاز دارید.
برای جاسازی یک برنامه وب در صفحه Sites ، این مراحل را دنبال کنید:
- صفحه Sites را که میخواهید برنامه وب را در آنجا اضافه کنید باز کنید.
- Insert > Embed URL را انتخاب کنید.
- URL برنامه وب را جایگذاری کنید و سپس روی ADD کلیک کنید.
برنامه وب در یک قاب در پیش نمایش صفحه ظاهر می شود. هنگامی که صفحه را منتشر می کنید، بینندگان سایت شما ممکن است نیاز به مجوز برنامه وب قبل از اجرای عادی داشته باشند. برنامه های وب غیرمجاز درخواست های مجوز را به کاربر ارائه می دهند.
برنامه های وب و تاریخچه مرورگر
داشتن یک برنامه وب Apps Script که یک برنامه چند صفحه ای را شبیه سازی می کند، یا برنامه ای با رابط کاربری پویا که از طریق پارامترهای URL کنترل می شود، می تواند مطلوب باشد. برای اینکه این کار را به خوبی انجام دهید، میتوانید یک شیء حالت برای نمایش رابط کاربری یا صفحه برنامه تعریف کنید، و در حالی که کاربر برنامه شما را هدایت میکند، وضعیت را به تاریخچه مرورگر فشار دهید. همچنین میتوانید به رویدادهای تاریخچه گوش دهید تا وقتی کاربر با دکمههای مرورگر به جلو و عقب حرکت میکند، برنامه وب شما رابط کاربری صحیح را نشان دهد. با پرس و جو از پارامترهای URL در زمان بارگذاری، می توانید از برنامه خود بخواهید که به صورت پویا رابط کاربری خود را بر اساس این پارامترها بسازد و به کاربر این امکان را می دهد که برنامه را در یک وضعیت خاص راه اندازی کند.
Apps Script دو API جاوا اسکریپت سمت کلاینت ناهمزمان را برای کمک به ایجاد برنامه های وب که به تاریخچه مرورگر پیوند دارند ارائه می دهد:
google.script.history
روش هایی را ارائه می دهد که امکان پاسخ پویا به تغییرات سابقه مرورگر را فراهم می کند. این شامل: فشار دادن حالت ها (اشیاء ساده ای که می توانید تعریف کنید) در تاریخچه مرورگر، جایگزینی حالت بالا در پشته سابقه، و تنظیم یک تابع پاسخ به تماس شنونده برای پاسخ به تغییرات سابقه است.google.script.url
ابزاری را برای بازیابی پارامترهای URL صفحه فعلی و قطعه URL در صورت وجود فراهم می کند.
این API های تاریخچه فقط برای برنامه های وب در دسترس هستند. آنها برای نوارهای کناری، گفتگوها یا افزونه ها پشتیبانی نمی شوند. این عملکرد همچنین برای استفاده در برنامههای وب تعبیهشده در Google Sites توصیه نمیشود.