خدمة المحتوى

التي تعرض محتوًى نصيًا أوليًا بأنواع MIME مختلفة.

عند نشر نص برمجي كتطبيق ويب، يتم تنفيذ دالّتَي رد الاتصال doGet وdoPost كلما تم إرسال طلب إلى عنوان URL الخاص بالنص البرمجي. بدلاً من عرض عنصر واجهة مستخدم تم إنشاؤه باستخدام خدمة HTML، يمكن أن تعرض خدمة المحتوى محتوى نصيًا أوليًا. يمكنك كتابة نصوص برمجية تعمل كخدمات، وتستجيب لطلبات GET وPOST وتعرض بيانات بأنواع MIME مختلفة.

الأساسيات

يوضّح المثال التالي كيفية استخدام خدمة Content:

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 لجلب خلاصة RSS الأصلية من XKCD. استخدِم تعبيرًا عاديًا متوافقًا مع JavaScript لإجراء عمليات الاستبدال. غلِّف الخلاصة المعدَّلة بكائن TextOutput واضبط نوع MIME على RSS.

لمشاهدة هذا الإجراء، انشر النص البرمجي كتطبيق ويب واسمح بالوصول المجهول. أضِف عنوان URL الخاص بالخدمة إلى قارئ RSS أو انتقِل إليه مباشرةً في متصفّح الويب.

عرض JSON من النصوص البرمجية

استخدِم خدمة Content لعرض 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 نطاقًا زمنيًا في حقبة Unix العادية.

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

تعرض الخدمة ملف JSON يوضّح ما إذا كان التقويم متاحًا في هذا النطاق.

{"available":true}

عرض JSONP في صفحات الويب

من خلال إجراء تغيير بسيط، يمكن أن تصبح خدمة JSON الخاصة بك JSONP ليتم استدعاؤها من JavaScript في المتصفح.

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 الإضافية. هذا هو اسم الدالة في JavaScript من جهة العميل التي يتم استدعاؤها باستخدام القيمة التي تعرضها الخدمة.

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

يعرض هذا المثال مربّع رسالة في المتصفّح يتضمّن ناتج الخدمة، وذلك باستخدام دالة alert المضمّنة في المتصفّح كبادئة. يبدو رمز JavaScript الذي تم عرضه على النحو التالي:

alert({"available":true})

يجب توخّي الحذر عند استخدام JSONP. بما أنّه يمكن لأي شخص تضمين علامة النص البرمجي في صفحة الويب الخاصة به، يمكن خداعك لتنفيذ النص البرمجي عند زيارة موقع إلكتروني ضارّ، ما قد يؤدي إلى تسجيل البيانات التي يتم إرجاعها. تأكَّد من أنّ نصوص JSONP البرمجية هي للقراءة فقط ولا تعرض سوى المعلومات غير الحسّاسة.

عمليات إعادة التوجيه

لأسباب تتعلق بالأمان، تتم إعادة توجيه المحتوى الذي تعرضه خدمة &quot;المحتوى&quot; إلى عنوان URL صالح لمرة واحدة على script.googleusercontent.com. إذا كنت تستخدم خدمة المحتوى لعرض البيانات في تطبيق آخر، تأكَّد من ضبط برنامج HTTP للعميل على اتّباع عمليات إعادة التوجيه. بالنسبة إلى أداة سطر الأوامر curl، أضِف العلامة -L. راجِع مستندات برنامج HTTP الذي تستخدمه للحصول على مزيد من المعلومات.