نقل النصوص البرمجية المتطابقة بشكل مجمّع من Rhino إلى V8

توضّح هذه الصفحة كيفية نقل النصوص البرمجية المتطابقة إلى الإصدار V8 باستخدام برمجة تطبيقات Google وApps Script API.

تم إيقاف وقت تشغيل Rhino نهائيًا في 31 يناير 2026 أو بعده. يُرجى نقل أي نصوص برمجية تستخدم وقت التشغيل Rhino قبل هذا التاريخ. إذا كانت لديك نصوص برمجية متعدّدة ومتطابقة تعمل على Rhino، يمكنك نقلها إلى V8 معًا باستخدام Apps Script API.

إعداد البيئة

  1. من إعدادات لوحة بيانات برمجة تطبيقات، فعِّل Apps Script API.
    1. انتقِل إلى إعدادات لوحة بيانات برمجة تطبيقات.
    2. إذا كانت واجهة برمجة التطبيقات غير مفعّلة، انقر على Apps Script API، ثم فعِّل مفتاح التبديل Apps Script API.
  2. أنشِئ مشروعًا عاديًا على Google Cloud أو أعِد استخدام مشروع حالي.
  3. في مشروعك على السحابة الإلكترونية، اضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth.
  4. في مشروعك على السحابة الإلكترونية، فعِّل واجهة برمجة التطبيقات "برمجة التطبيقات".

    تفعيل واجهة برمجة التطبيقات Apps Script API

  5. أنشئ مشروعًا في "برمجة تطبيقات" واربطه بمشروعك على السحابة الإلكترونية.

    1. أنشئ مشروعًا مستقلاً في "برمجة تطبيقات Google" من لوحة بيانات "برمجة تطبيقات Google" أو من خلال الانتقال إلى script.new.
    2. انقر على إعدادات المشروع رمز إعدادات المشروع.
    3. في قسم مشروع Google Cloud، انقر على تغيير المشروع.
    4. أدخِل رقم مشروعك على السحابة الإلكترونية.
    5. انقر على تحديد المشروع.

نقل النصوص البرمجية

يوضّح نموذج الرمز البرمجي التالي كيفية استخدام واجهة برمجة التطبيقات Apps Script لنقل النصوص البرمجية المتطابقة من Rhino إلى V8 من خلال استبدال الملفات في كل مشروع من مشاريع Apps Script بمجموعة من الملفات المتوافقة مع V8.

عند استخدام طريقة projects.UpdateContent في واجهة برمجة التطبيقات Apps Script، يجب تضمين جميع الملفات في مشروع النص البرمجي، حتى تلك التي لا تريد تغييرها. إذا لم تضمّن ملفًا، سيتم حذفه ولن تتمكّن من استعادته.

تأكَّد من أنّ لديك إذن وصول بصفة محرّر على الأقل لمشاريع البرامج النصية التي تخطّط لنقلها.

Code.gs

function updateRhinoScripts() {
  // An array of script IDs of script projects to migrate.
  // TODO(developer): Replace with your script IDs.
  const scriptIds = ['abcdef12345678', 'abcdef12345678'];
  // An array of file objects to replace the existing files in each script project.
  // Remember to include all files for the script, excluded files are deleted.
  // TODO(developer): Replace with your script files.
  const filesToUpdate = {
    "files": [
      {
        "name": "Code",
        "type": "SERVER_JS",
        "source": "// New updates\nfunction myFunction() {\n  console.log('Hello, world!');\n}"
      },
      {
        "name": "appsscript",
        "type": "JSON",
        "source": JSON.stringify({
          "timeZone": "America/New_York",
          "dependencies": {},
          "exceptionLogging": "STACKDRIVER",
          "runtimeVersion": "V8"
        })
      }
    ]
  };
  updateMultipleAppsScripts(scriptIds, filesToUpdate);
}

function updateMultipleAppsScripts(scriptIds, filesToUpdate) {
  // 'scriptIds' should be an array of script IDs
  // 'filesToUpdate' should be an array of objects, each with:
  // name: The filename (For example, "Code", "Utilities")
  // source: The source code for that file.
  scriptIds.forEach(function (scriptId) {
    // Makes the API request.
    const response = UrlFetchApp.fetch(
      `https://script.googleapis.com/v1/projects/${scriptId}/content`,
      {
        method: "PUT",
        headers: {
          Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
        },
        contentType: "application/json",
        payload: JSON.stringify(filesToUpdate),
        muteHttpExceptions: true
      }
    );
    if (response.getResponseCode() !== 200) {
      console.log(`Error updating script ${scriptId}: ${response.getContentText()}`);
    } else {
      console.log(`Script ${scriptId} updated successfully!`);
    }
  });
}

appsscript.json

لاستخدام Apps Script API في مشروع برمجة تطبيقات، أضِف نطاقات OAuth التالية إلى ملف البيان:

  • "https://www.googleapis.com/auth/script.projects"
  • "https://www.googleapis.com/auth/script.external_request"

لعرض ملف البيان في المحرّر، انقر على إعدادات المشروع رمز إعدادات المشروع وضع علامة في المربّع عرض ملف البيان "appsscript.json" في المحرّر. في ما يلي نموذج لملف بيان يتضمّن نطاقات OAuth المناسبة:

{
  "timeZone": "America/Denver",
  "dependencies": {
  },
  "oauthScopes": [
  "https://www.googleapis.com/auth/script.projects",
  "https://www.googleapis.com/auth/script.external_request"
],
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}