پروژههای اسکریپت Google Apps که به Google Docs، Google Sheets یا Google Forms متصل هستند ، میتوانند عناصر رابط کاربری مانند هشدارهای از پیش ساخته شده، اعلانها، Toastها، دیالوگها و نوارهای کناری را نمایش دهند. این عناصر معمولاً حاوی محتوای سرویس HTML سفارشی هستند و اغلب از طریق آیتمهای منو باز میشوند. در Forms، عناصر رابط کاربری فقط برای ویرایشگری که فرم را برای تغییر آن باز میکند، قابل مشاهده هستند، نه برای پاسخدهنده.
پنجرههای هشدار

یک هشدار، یک کادر محاورهای از پیش ساخته شده است که در داخل ویرایشگر اسناد، برگهها، اسلایدها یا فرمها باز میشود. این کادر یک پیام و یک دکمه تأیید را نمایش میدهد؛ عنوان و دکمههای جایگزین اختیاری هستند. این شبیه به فراخوانی window.alert در جاوا اسکریپت سمت کلاینت در یک مرورگر وب است.
هشدارها اسکریپت سمت سرور را در حین باز بودن پنجره محاورهای به حالت تعلیق در میآورند. اسکریپت پس از بستن پنجره محاورهای توسط کاربر از سر گرفته میشود، اما اتصالات JDBC در طول مدت تعلیق ادامه نمییابند.
همانطور که در مثال زیر نشان داده شده است، Docs، Forms، Slides و Sheets همگی از متد Ui.alert استفاده میکنند که در سه نوع موجود است. برای لغو دکمه پیشفرض OK ، مقداری از enum Ui.ButtonSet را به عنوان آرگومان buttons ارسال کنید. برای ارزیابی اینکه کاربر روی کدام دکمه کلیک کرده است، مقدار برگشتی برای alert را با enum Ui.Button مقایسه کنید.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show alert", "showAlert")
.addToUi();
}
function showAlert() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.alert(
"Please confirm",
"Are you sure you want to continue?",
ui.ButtonSet.YES_NO,
);
// Process the user's response.
if (result === ui.Button.YES) {
// User clicked "Yes".
ui.alert("Confirmation received.");
} else {
// User clicked "No" or X in the title bar.
ui.alert("Permission denied.");
}
}
دیالوگهای سریع

یک اعلان (prompt) یک کادر محاورهای از پیش ساخته شده است که در داخل ویرایشگر اسناد، برگهها، اسلایدها یا فرمها باز میشود. این کادر یک پیام، یک فیلد ورودی متن و یک دکمه تأیید (OK) را نمایش میدهد؛ عنوان و دکمههای جایگزین اختیاری هستند. این شبیه به فراخوانی window.prompt در جاوا اسکریپت سمت کلاینت در یک مرورگر وب است.
اعلانها اسکریپت سمت سرور را در حین باز بودن پنجره محاورهای به حالت تعلیق در میآورند. اسکریپت پس از بستن پنجره توسط کاربر از سر گرفته میشود، اما اتصالات JDBC در طول مدت تعلیق ادامه نمییابند.
همانطور که در مثال زیر نشان داده شده است، Docs، Forms، Slides و Sheets همگی از متد Ui.prompt استفاده میکنند که در سه نوع موجود است. برای لغو دکمهی پیشفرض OK ، مقداری از enum مربوط به Ui.ButtonSet را به عنوان آرگومان buttons ارسال کنید. برای ارزیابی پاسخ کاربر، مقدار بازگشتی برای prompt را دریافت کنید، سپس PromptResponse.getResponseText را برای بازیابی ورودی کاربر فراخوانی کنید و مقدار بازگشتی برای PromptResponse.getSelectedButton را با enum مربوط به Ui.Button مقایسه کنید.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show prompt", "showPrompt")
.addToUi();
}
function showPrompt() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.prompt(
"Let's get to know each other!",
"Please enter your name:",
ui.ButtonSet.OK_CANCEL,
);
// Process the user's response.
const button = result.getSelectedButton();
const text = result.getResponseText();
if (button === ui.Button.OK) {
// User clicked "OK".
ui.alert("Your name is " + text + ".");
} else if (button === ui.Button.CANCEL) {
// User clicked "Cancel".
ui.alert("I didn't get your name.");
} else if (button === ui.Button.CLOSE) {
// User clicked X in the title bar.
ui.alert("You closed the dialog.");
}
}
تستهای صفحه گسترده
یک «toast» یک پنجره محاورهای کوچک در گوشه پایین سمت راست ویرایشگر Sheets است که پیامی را نمایش میدهد اما اسکریپت را متوقف نمیکند. این یک روش خوب برای نمایش پیامهای وضعیت یا بهروزرسانیهایی است که نیازی به تعامل کاربر ندارند.
همانطور که در مثال زیر نشان داده شده است، Sheets از متد Spreadsheet.toast استفاده میکند. Toastها فقط در Sheets در دسترس هستند.
function showToast() {
SpreadsheetApp.getActiveSpreadsheet().toast("Task completed successfully.");
}
دیالوگهای سفارشی

یک کادر محاورهای سفارشی میتواند رابط کاربری سرویس HTML را در داخل ویرایشگر اسناد، برگهها، اسلایدها یا فرمها نمایش دهد.
دیالوگهای سفارشی، اسکریپت سمت سرور را در حین باز بودن دیالوگ به حالت تعلیق در نمیآورند . از آنجا که آنها ناهمزمان هستند، تابع سمت سرور که دیالوگ را باز میکند، بلافاصله پایان مییابد. برای انتقال دادهها از دیالوگ سفارشی به سرور، از API google.script در کد سمت کلاینت خود استفاده کنید.
این پنجره محاورهای میتواند با فراخوانی google.script.host.close در سمت کلاینتِ رابط سرویس HTML، خود را ببندد. این پنجره محاورهای نمیتواند توسط رابطهای دیگر بسته شود، فقط توسط کاربر یا خودش قابل بستن است.
همانطور که در مثال زیر نشان داده شده است، Docs، Forms، Slides و Sheets همگی از متد Ui.showModalDialog برای باز کردن کادر محاورهای استفاده میکنند.
کد.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show dialog', 'showDialog') .addToUi(); } function showDialog() { const html = HtmlService.createHtmlOutputFromFile('Page') .setWidth(400) .setHeight(300); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showModalDialog(html, 'My custom dialog'); }
صفحه.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
ستونهای فرعی سفارشی

یک نوار کناری میتواند رابط کاربری سرویس HTML را در داخل ویرایشگر اسناد، فرمها، اسلایدها و برگهها نمایش دهد.
نوارهای کناری اسکریپت سمت سرور را در حالی که کادر محاورهای باز است، به حالت تعلیق در نمیآورند . کامپوننت سمت کلاینت میتواند با استفاده از API google.script برای رابطهای سرویس HTML، فراخوانیهای ناهمزمان به اسکریپت سمت سرور انجام دهد.
نوار کناری میتواند با فراخوانی google.script.host.close در سمت کلاینت یک رابط سرویس HTML، خود را ببندد. نوار کناری نمیتواند توسط رابطهای دیگر بسته شود، فقط توسط کاربر یا خودش میتواند این کار را انجام دهد.
همانطور که در مثال زیر نشان داده شده است، Docs، Forms، Slides و Sheets همگی از متد Ui.showSidebar برای باز کردن نوار کناری استفاده میکنند.
کد.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } function showSidebar() { const html = HtmlService.createHtmlOutputFromFile('Page') .setTitle('My custom sidebar'); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showSidebar(html); }
صفحه.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
پنجرههای محاورهای باز کردن فایل
Google Picker یک API جاوا اسکریپت است که به کاربران امکان میدهد فایلهای گوگل درایو را انتخاب یا آپلود کنند. از کتابخانه Google Picker در سرویس HTML برای ایجاد یک کادر محاورهای سفارشی استفاده کنید که به کاربران امکان میدهد فایلهای موجود را انتخاب کنند یا فایلهای جدید را آپلود کنند، سپس انتخاب را به اسکریپت شما منتقل کنند.
الزامات
استفاده از Google Picker با Google Apps Script چندین الزام دارد:
پروژه اسکریپت شما باید از یک پروژه استاندارد Google Cloud استفاده کند.
اگر از دامنه
drive.fileاستفاده میکنید، همان شماره پروژه Cloud را بهPickerBuilder.setAppIdارسال کنید.مانیفست پروژه Apps Script باید محدودههای مجوز مورد نیاز توسط Google Picker API را مشخص کند تا
ScriptApp.getOAuthTokenتوکن صحیح را برایPickerBuilder.setOauthtokenبرگرداند.کلید API تنظیمشده در
PickerBuilder.setDeveloperKeyرا به Apps Script محدود کنید. در بخش Application restrictions ، این مراحل را دنبال کنید:- ارجاعدهندگان HTTP (وبسایتها) را انتخاب کنید.
- در زیر محدودیتهای وبسایت ، روی افزودن یک مورد کلیک کنید.
- روی Referrer کلیک کنید و
*.google.comرا وارد کنید. - یک مورد دیگر اضافه کنید و
*.googleusercontent.comرا به عنوان معرف وارد کنید. - روی انجام شد کلیک کنید.
فراخوانی
PickerBuilder.setOrigin
مثال
مثال زیر Google Picker را در Apps Script نشان میدهد.