الدمج مع واجهة مستخدم Drive "؛الفتح باستخدام" قائمة السياق

عندما يختار مستخدم ملفًا وينقر على "فتح باستخدام" في واجهة مستخدم Drive عنصر القائمة، عمليات إعادة التوجيه في Drive المستخدم لعنوان URL المفتوح لهذا التطبيق والمحدد في إعداد واجهة مستخدم Drive والتكامل.

إذا حددت زر "الاستيراد" المربع عند إعداد واجهة مستخدم Drive التكامل، يمكن للمستخدم تحديد مزيج من السمات الخاصة بالتطبيق ملفات Google Workspace المراد فتحها عند إعداد واجهة مستخدم Drive التكامل، يتم تحديد الملفات الخاصة بالتطبيق في "أنواع MIME الافتراضية" أو "امتدادات الملفات التلقائية" الحقول، في حين أن Google Workspace في "أنواع MIME الثانوية" و"امتدادات الملفات الثانوية" الحقول.

لكل ملف يريد المستخدم فتحه، تتحقق خدمة Drive من بروتوكول MIME مقارنةً بأنواع MIME التلقائية والثانوية المحدّدة:

  • بالنسبة إلى أنواع MIME المحدّدة في "أنواع MIME التلقائية" الحقل، معرف الملف هو تمريره إلى تطبيقك. للحصول على معلومات حول كيفية التعامل مع الملفات الخاصة بالتطبيق، راجِع التعامل مع عنوان URL المفتوح للمستندات الخاصة بالتطبيق.

  • بالنسبة إلى أنواع MIME المحدّدة في "أنواع MIME الثانوية" الحقل، الـ واجهة مستخدم Drive تعرض مربّع حوار يسأل المستخدم عن نوع الملف المطلوب يتم تحويل ملف Google Workspace إليه. على سبيل المثال، إذا حددت ملف "مستندات Google" في واجهة مستخدم Drive و"MIME الثانوي" الأنواع" يشير إلى أن تطبيقك يتيح استخدام النص/العادي أو التطبيق/pdf، واجهة مستخدم Drive تسأل المستخدم ما إذا كان يريد التحويل إلى نص عادي أو PDF.

    للحصول على معلومات حول كيفية التعامل مع Google Workspace الملفات، يُرجى الاطِّلاع على التعامل مع عنوان URL المفتوح لمستندات Google Workspace. للحصول على قائمة بمستندات Google Workspace وتنسيقات الإحالات الناجحة من نوع MIME: راجِع مقالة تصدير أنواع بروتوكول MIME في Google Workspace. المستندات.

التعامل مع عنوان URL مفتوح للمستندات الخاصة بالتطبيق

كما هو موضح في ضبط واجهة مستخدم Drive والدمج، يتلقّى تطبيقك متغيّرات النماذج مع معلومات ليفتحها التطبيق الملف. يتلقّى تطبيقك مجموعة تلقائية من متغيّرات النماذج ضمن مَعلمة state. تشير رسالة الأشكال البيانية معلومات state التلقائية لعنوان URL المفتوح الخاص بالتطبيق هي:

{
  "ids": ["ID"],
  "resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
  "action":"open",
  "userId":"USER_ID"
}

يتضمن هذا الإخراج القيم التالية:

  • ID: رقم تعريف المجلد الرئيسي
  • RESOURCE_KEYS: قاموس JSON لمعرّفات الملفات التي تم الربط بها مفاتيح الموارد الخاصة بكل منها.
  • open: الإجراء الذي يتم تنفيذه تكون القيمة open عند استخدام دالة Open عنوان URL.
  • USER_ID: رقم تعريف الملف الشخصي الذي يعرّف عن المستخدم بشكلٍ فريد

ولتنفيذ هذا الطلب، يجب أن يتّبع تطبيقك الخطوات التالية:

  1. تحقق من أن الحقل action يحتوي على القيمة open والحقل ids هو حاليًا.
  2. استخدِم القيمة userId لإنشاء جلسة جديدة للمستخدِم. لمزيد من المعلومات، معلومات عن المستخدمين الذين سجّلوا الدخول، راجِع المستخدمون الأحداث الجديدة.
  3. يمكنك استخدام طريقة files.get للتحقّق من ذلك. وجلب البيانات الوصفية للملفات وتنزيل محتوى الملف باستخدام قيم ID.
  4. إذا تم ضبط resourceKeys على الطلب، اضبط عنوان طلب X-Goog-Drive-Resource-Keys. لمزيد من المعلومات حول الموارد، راجع الوصول إلى الملفات المشتركة باستخدام رابط باستخدام المورد .

والمَعلمة state هي عنوان URL مرمّز، لذا يجب أن يتعامل تطبيقك مع مفتاح الإلغاء. وتحليله على هيئة JSON.

التعامل مع عنوان URL مفتوح لمستندات Google Workspace

كما هو موضح في ضبط واجهة مستخدم Drive التكامل، يتلقى تطبيقك مجموعة افتراضية من متغيّرات النموذج ضمن مَعلمة state معلومات state التلقائية بالنسبة إلى عنوان URL المفتوح في Google Workspace هو:

{
  "exportIds": ["ID"],
  "resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
  "action":"open",
  "userId":"USER_ID"
}

يتضمن هذا الإخراج القيم التالية:

  • EXPORT_ID: قائمة بمعرّفات الملفات المفصولة بفواصل تصديره (لا يُستخدم إلا عند فتح مستندات Google المضمنة).
  • RESOURCE_KEYS: قاموس JSON لمعرّفات الملفات التي تم الربط بها مفاتيح الموارد الخاصة بكل منها.
  • open: الإجراء الذي يتم تنفيذه تكون القيمة open عند استخدام دالة Open عنوان URL.
  • USER_ID: رقم تعريف الملف الشخصي الذي يحدّد هوية المستخدم

ولتنفيذ هذا الطلب، يجب أن يتّبع تطبيقك الخطوات التالية:

  1. تأكَّد من أنّ هذا طلب لفتح ملف، وذلك من خلال رصد كل من open. في الحقل state ووجود الحقل exportIds.

  2. يمكنك استخدام طريقة files.get للتحقّق من ذلك. وجلب البيانات الوصفية للملفات وتحديد نوع MIME باستخدام EXPORT_ID.

  3. قم بتحويل محتوى الملف باستخدام دالة sort_values files.export. ما يلي: نموذج رمز برمجي يعرض كيفية تصدير مستند Google Workspace إلى نوع MIME المطلوب.

  4. إذا تم ضبط resourceKey على الطلب، اضبط عنوان طلب X-Goog-Drive-Resource-Keys. لمزيد من المعلومات حول الموارد، راجع الوصول إلى الملفات المشتركة باستخدام رابط باستخدام المورد .

    Java

    drive/snippets/drive_v3/src/main/java/ExportPdf.java
    import com.google.api.client.googleapis.json.GoogleJsonResponseException;
    import com.google.api.client.http.HttpRequestInitializer;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.services.drive.Drive;
    import com.google.api.services.drive.DriveScopes;
    import com.google.auth.http.HttpCredentialsAdapter;
    import com.google.auth.oauth2.GoogleCredentials;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Arrays;
    
    /* Class to demonstrate use-case of drive's export pdf. */
    public class ExportPdf {
    
      /**
       * Download a Document file in PDF format.
       *
       * @param realFileId file ID of any workspace document format file.
       * @return byte array stream if successful, {@code null} otherwise.
       * @throws IOException if service account credentials file not found.
       */
      public static ByteArrayOutputStream exportPdf(String realFileId) throws IOException {
        // Load pre-authorized user credentials from the environment.
        // TODO(developer) - See https://developers.google.com/identity for
        // guides on implementing OAuth2 for your application.
        GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
            .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
        HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
            credentials);
    
        // Build a new authorized API client service.
        Drive service = new Drive.Builder(new NetHttpTransport(),
            GsonFactory.getDefaultInstance(),
            requestInitializer)
            .setApplicationName("Drive samples")
            .build();
    
        OutputStream outputStream = new ByteArrayOutputStream();
        try {
          service.files().export(realFileId, "application/pdf")
              .executeMediaAndDownloadTo(outputStream);
    
          return (ByteArrayOutputStream) outputStream;
        } catch (GoogleJsonResponseException e) {
          // TODO(developer) - handle error appropriately
          System.err.println("Unable to export file: " + e.getDetails());
          throw e;
        }
      }
    }

    Python

    drive/snippets/drive-v3/file_snippet/export_pdf.py
    import io
    
    import google.auth
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError
    from googleapiclient.http import MediaIoBaseDownload
    
    
    def export_pdf(real_file_id):
      """Download a Document file in PDF format.
      Args:
          real_file_id : file ID of any workspace document format file
      Returns : IO object with location
    
      Load pre-authorized user credentials from the environment.
      TODO(developer) - See https://developers.google.com/identity
      for guides on implementing OAuth2 for the application.
      """
      creds, _ = google.auth.default()
    
      try:
        # create drive api client
        service = build("drive", "v3", credentials=creds)
    
        file_id = real_file_id
    
        # pylint: disable=maybe-no-member
        request = service.files().export_media(
            fileId=file_id, mimeType="application/pdf"
        )
        file = io.BytesIO()
        downloader = MediaIoBaseDownload(file, request)
        done = False
        while done is False:
          status, done = downloader.next_chunk()
          print(f"Download {int(status.progress() * 100)}.")
    
      except HttpError as error:
        print(f"An error occurred: {error}")
        file = None
    
      return file.getvalue()
    
    
    if __name__ == "__main__":
      export_pdf(real_file_id="1zbp8wAyuImX91Jt9mI-CAX_1TqkBLDEDcr2WeXBbKUY")

    Node.js

    drive/snippets/drive_v3/file_snippets/export_pdf.js
    /**
     * Download a Document file in PDF format
     * @param{string} fileId file ID
     * @return{obj} file status
     * */
    async function exportPdf(fileId) {
      const {GoogleAuth} = require('google-auth-library');
      const {google} = require('googleapis');
    
      // Get credentials and build service
      // TODO (developer) - Use appropriate auth mechanism for your app
      const auth = new GoogleAuth({
        scopes: 'https://www.googleapis.com/auth/drive',
      });
      const service = google.drive({version: 'v3', auth});
    
      try {
        const result = await service.files.export({
          fileId: fileId,
          mimeType: 'application/pdf',
        });
        console.log(result.status);
        return result;
      } catch (err) {
        // TODO(developer) - Handle error
        throw err;
      }
    }

    PHP

    drive/snippets/drive_v3/src/DriveExportPdf.php
    use Google\Client;
    use Google\Service\Drive;
    function exportPdf()
    {
        try {
            $client = new Client();
            $client->useApplicationDefaultCredentials();
            $client->addScope(Drive::DRIVE);
            $driveService = new Drive($client);
            $realFileId = readline("Enter File Id: ");
            $fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
            $fileId = $realFileId;
            $response = $driveService->files->export($fileId, 'application/pdf', array(
                'alt' => 'media'));
            $content = $response->getBody()->getContents();
            return $content;
    
        }  catch(Exception $e) {
             echo "Error Message: ".$e;
        }
    
    }

عرض الملفات المحوّلة للقراءة فقط أو تقديم مربّع حوار يتيح للمستخدم احفظ الملف كنوع ملف جديد.

والمَعلمة state هي عنوان URL مرمّز، لذا يجب أن يتعامل تطبيقك مع مفتاح الإلغاء. وتحليله على هيئة JSON.

المستخدمون أحداث جديدة

يجب أن تتعامل تطبيقات Drive مع جميع العناصر "فتح بـ" الأحداث على أنّها فرصة لتسجيل الدخول. قد يمتلك بعض المستخدمين حسابات متعددة، لذا يجب أن يكون رقم تعريف المستخدم في state. قد لا تتطابق مع الجلسة الحالية. إذا كان رقم تعريف المستخدم في state مع الجلسة الحالية، يُرجى إنهاء الجلسة الحالية التطبيق وتسجيل الدخول كمستخدم المطلوب.

بالإضافة إلى فتح تطبيق من واجهة مستخدم Google Drive، يمكن للتطبيقات عرض "أداة اختيار الملفات" لاختيار المحتوى من داخل التطبيق لمزيد من المعلومات، معلومات، راجع أداة اختيار Google.