سرویس محتوا

که محتوای متنی خام از انواع مختلف MIME را برمی‌گردانند.

وقتی یک اسکریپت به عنوان یک برنامه وب منتشر می‌شود، توابع فراخوانی doGet و doPost هر زمان که درخواستی به URL اسکریپت ارسال شود، اجرا می‌شوند. سرویس محتوا به جای بازگرداندن یک شیء رابط کاربری ایجاد شده با سرویس HTML ، می‌تواند محتوای متنی خام را برگرداند. اسکریپت‌هایی بنویسید که به عنوان سرویس عمل می‌کنند، به درخواست‌های GET و POST پاسخ می‌دهند و داده‌هایی از انواع مختلف MIME را ارائه می‌دهند.

اصول اولیه

مثال زیر نحوه استفاده از سرویس محتوا را نشان می‌دهد:

function doGet() {
  return ContentService.createTextOutput('Hello, world!');
}

اسکریپت را به عنوان یک برنامه وب مستقر کنید . همان مراحل ارائه رابط کاربری را دنبال کنید. وقتی یک درخواست GET به URL اسکریپت ارسال می‌شود، متن Hello, world! برمی‌گردد. علاوه بر متن ساده، این سرویس از بازگرداندن محتوای ATOM، CSV، iCal، JavaScript، JSON، RSS، vCard و XML پشتیبانی می‌کند.

فیدهای RSS را ارائه دهید

برای تغییر محتوای یک فید RSS، آن را فیلتر کنید. برای مثال، یک فید XKCD را ویرایش کنید تا متن جایگزین را مستقیماً در فید قرار دهید تا مشاهده آن در موبایل بهتر شود.

function doGet() {
  var feed = UrlFetchApp.fetch('http://xkcd.com/rss.xml').getContentText();
  feed = feed.replace(
    /(<img.*?alt="(.*?)".*?>)/g,
    '$1' + new Array(10).join('<br />') + '$2');
  return ContentService.createTextOutput(feed)
    .setMimeType(ContentService.MimeType.RSS);
}

این کد از اجزای زیر تشکیل شده است. از سرویس URL Fetch برای دریافت فید RSS اصلی XKCD استفاده کنید. از یک عبارت منظم استاندارد جاوا اسکریپت برای ایجاد جایگزینی‌ها استفاده کنید. فید ویرایش شده را در یک شیء TextOutput قرار دهید و نوع MIME را روی RSS تنظیم کنید.

برای مشاهده‌ی این قابلیت در عمل، اسکریپت را به عنوان یک برنامه‌ی وب منتشر کنید و دسترسی ناشناس را مجاز کنید. آدرس اینترنتی سرویس را به RSS خوان خود اضافه کنید یا مستقیماً در یک مرورگر وب به آن مراجعه کنید.

ارائه JSON از اسکریپت‌ها

از سرویس محتوا برای ارائه JSON به اسکریپت‌ها، وب‌سایت‌ها و سرویس‌های دیگر استفاده کنید. اسکریپت زیر سرویسی را پیاده‌سازی می‌کند که بررسی می‌کند آیا یک بازه زمانی خاص در تقویم باز است یا خیر.

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(JSON.stringify(result))
    .setMimeType(ContentService.MimeType.JSON);
}

این را به عنوان یک برنامه وب ناشناس منتشر کنید. کاربران می‌توانند پارامترهای URL را به انتهای URL سرویس اضافه کنند. پارامترهای start و end یک محدوده زمانی را در دوره استاندارد یونیکس مشخص می‌کنند.

curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000

این سرویس JSON را برمی‌گرداند که گزارش می‌دهد آیا تقویم در آن محدوده باز است یا خیر.

{"available":true}

ارائه JSONP در صفحات وب

با یک تغییر جزئی، سرویس JSON شما می‌تواند به JSONP تبدیل شود تا از جاوا اسکریپت در مرورگر فراخوانی شود.

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(
    request.parameters.prefix + '(' + JSON.stringify(result) + ')')
    .setMimeType(ContentService.MimeType.JAVASCRIPT);
}

برای فراخوانی این سرویس از طریق مرورگر، یک تگ اسکریپت با ویژگی src که روی URL سرویس تنظیم شده و یک پارامتر prefix اضافی ایجاد کنید. این نام تابعی در جاوا اسکریپت سمت کلاینت شماست که با مقداری که توسط سرویس برگردانده می‌شود، فراخوانی می‌شود.

<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>

این مثال یک کادر پیام در مرورگر با خروجی سرویس نشان می‌دهد که از تابع alert داخلی مرورگر به عنوان پیشوند استفاده می‌کند. کد جاوا اسکریپت برگردانده شده به صورت زیر است:

alert({"available":true})

هنگام استفاده از JSONP مراقب باشید. از آنجا که هر کسی می‌تواند تگ اسکریپت را در صفحه وب خود جاسازی کند، ممکن است هنگام بازدید از یک وب‌سایت مخرب، فریب خورده و اسکریپت را اجرا کنید که می‌تواند داده‌های برگشتی را ضبط کند. مطمئن شوید که اسکریپت‌های JSONP فقط خواندنی هستند و فقط اطلاعات غیر حساس را برمی‌گردانند.

تغییر مسیرها

برای امنیت، محتوای برگردانده شده توسط سرویس محتوا به یک URL یکبار مصرف در script.googleusercontent.com هدایت می‌شود. اگر از سرویس محتوا برای بازگرداندن داده‌ها به برنامه دیگری استفاده می‌کنید، مطمئن شوید که کلاینت HTTP برای دنبال کردن هدایت‌ها پیکربندی شده است. برای ابزار خط فرمان curl، پرچم -L را اضافه کنید. برای اطلاعات بیشتر، مستندات مربوط به کلاینت HTTP خود را بررسی کنید.