انتقال انبوه اسکریپت های یکسان از Rhino به V8

این صفحه نحوه‌ی انتقال اسکریپت‌های یکسان به V8 را با استفاده از Apps Script و Apps Script API شرح می‌دهد.

شما باید هر اسکریپتی را که از محیط اجرایی راینو استفاده می‌کند، قبل از رد شدن راینو، که در تاریخ ۳۱ ژانویه ۲۰۲۶ یا بعد از آن اتفاق می‌افتد، منتقل کنید. اگر چندین اسکریپت یکسان در راینو دارید که در حال اجرا هستند، می‌توانید همه آنها را با هم با استفاده از Apps Script API به V8 منتقل کنید.

محیط خود را تنظیم کنید

  1. از تنظیمات داشبورد Apps Script، API Apps Script را فعال کنید.
    1. به تنظیمات داشبورد Apps Script بروید.
    2. اگر API غیرفعال است، روی Google Apps Script API کلیک کنید، سپس گزینه Google Apps Script API را فعال کنید.
  2. یک پروژه استاندارد Google Cloud ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید.
  3. در پروژه ابری خود، صفحه رضایت OAuth را پیکربندی کنید .
  4. در پروژه Cloud خود، API مربوط به Apps Script را فعال کنید .

    API اسکریپت برنامه‌ها را روشن کنید

  5. یک پروژه Apps Script ایجاد کنید و پروژه Apps Script را به پروژه Cloud خود اختصاص دهید.

    1. یک پروژه مستقل Apps Script از داشبورد Apps Script یا با رفتن به script.new ایجاد کنید.
    2. روی تنظیمات پروژه کلیک کنید آیکون مربوط به تنظیمات پروژه .
    3. در بخش پروژه پلتفرم ابری گوگل (GCP) ، روی تغییر پروژه کلیک کنید.
    4. شماره پروژه ابری خود را وارد کنید.
    5. روی تنظیم پروژه کلیک کنید.

اسکریپت‌های مهاجرت

نمونه کد زیر نحوه استفاده از API Apps Script را برای مهاجرت اسکریپت‌های یکسان از راینو به V8 با جایگزینی فایل‌های موجود در هر پروژه Apps Script با مجموعه‌ای از فایل‌های سازگار با V8 نشان می‌دهد.

مطمئن شوید که حداقل به پروژه‌های اسکریپتی که قصد انتقال آنها را دارید، دسترسی ویرایشگر دارید.

کد.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

برای استفاده از API مربوط به Apps Script در پروژه Apps Script خود، باید scopeهای OAuth زیر را به فایل manifest خود اضافه کنید:

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

برای نمایش فایل مانیفست در ویرایشگر، روی تنظیمات پروژه کلیک کنید آیکون مربوط به تنظیمات پروژه و تیک گزینه‌ی «نمایش فایل مانیفست برنامه‌ها در ویرایشگر» را بزنید. در زیر نمونه‌ای از فایل مانیفست با دامنه‌های 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"
}