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

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

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

إعداد البيئة

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

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

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

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

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

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

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

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 في مشروع Apps Script، يجب إضافة نطاقات 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"
}