Drive के यूज़र इंटरफ़ेस (यूआई) के "Drive with यूज़र इंटरफ़ेस (यूआई)" मेन्यू के साथ इंटिग्रेट करें

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

जब कोई उपयोगकर्ता किसी फ़ाइल को चुनता है और Drive के यूज़र इंटरफ़ेस (यूआई) के "इसमें खोलें" मेन्यू आइटम पर क्लिक करता है, तो Drive उसे ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) इंटिग्रेशन कॉन्फ़िगर करें में बताए गए, ऐप्लिकेशन के ओपन यूआरएल पर रीडायरेक्ट कर देता है.

अगर Drive के यूज़र इंटरफ़ेस (यूआई) को इंटिग्रेट करते समय "इंपोर्ट करने" के बॉक्स पर सही का निशान लगाया गया हो, तो उपयोगकर्ता को ऐप्लिकेशन खोलने के लिए खास ऐप्लिकेशन और Google Workspace की अलग-अलग फ़ाइलों को एक साथ चुनना होगा. Drive के यूज़र इंटरफ़ेस (यूआई) का इंटिग्रेशन कॉन्फ़िगर करने पर, ऐप्लिकेशन की खास फ़ाइलें "डिफ़ॉल्ट MIME टाइप" और "डिफ़ॉल्ट फ़ाइल एक्सटेंशन" फ़ील्ड में दिखाई जाती हैं. हालांकि, Google Workspace की फ़ाइलें, "सेकंडरी MIME टाइप" और "सेकंडरी फ़ाइल एक्सटेंशन" फ़ील्ड में दिखाई जाती हैं.

उपयोगकर्ता जिस फ़ाइल को खोलना चाहता है उसे Drive पर MIME टाइप की जांच करने के लिए, आपके डिफ़ॉल्ट और दूसरे MIME टाइप का इस्तेमाल किया जाता है:

  • "डिफ़ॉल्ट MIME टाइप" फ़ील्ड में दिए गए MIME टाइप के लिए, फ़ाइल का आईडी आपके ऐप्लिकेशन को भेजा जाता है. ऐप्लिकेशन की खास फ़ाइलों को मैनेज करने के तरीके के बारे में जानने के लिए, ऐप्लिकेशन के हिसाब से बने दस्तावेज़ों के लिए ओपन यूआरएल मैनेज करना देखें.

  • "इसके दूसरे MIME टाइप" फ़ील्ड में दिए गए MIME टाइप के लिए, Drive का यूज़र इंटरफ़ेस एक डायलॉग दिखाता है. इस डायलॉग में, उपयोगकर्ता से पूछा जाता है कि Google Workspace फ़ाइल में किस तरह की फ़ाइल फ़ाइल में बदलना है. उदाहरण के लिए, अगर आप Drive के यूज़र इंटरफ़ेस (यूआई) में Google Docs फ़ाइल चुनते हैं और "सेकंडरी MIME टाइप" फ़ील्ड से पता चलता है कि आपका ऐप्लिकेशन, टेक्स्ट/सादा या ऐप्लिकेशन/PDF के साथ काम करता है, तो Drive का यूज़र इंटरफ़ेस (यूआई), उपयोगकर्ता से पूछता है कि क्या वह सादे लेख या PDF में बदलना चाहता है.

    Google Workspace की फ़ाइलों को मैनेज करने के तरीके के बारे में जानने के लिए, Google Workspace के दस्तावेज़ों के लिए ओपन यूआरएल मैनेज करना लेख पढ़ें. Google Workspace के दस्तावेज़ों और MIME टाइप वाले कन्वर्ज़न फ़ॉर्मैट की सूची के लिए, Google Workspace के दस्तावेज़ों के लिए MIME टाइप एक्सपोर्ट करें देखें.

ऐप्लिकेशन के हिसाब से दस्तावेज़ों के लिए, ओपन यूआरएल को हैंडल करना

जैसा कि Drive यूज़र इंटरफ़ेस (यूआई) इंटिग्रेशन को कॉन्फ़िगर करें में बताया गया है, आपके ऐप्लिकेशन को फ़ाइल से खोले जाने के लिए ज़रूरी जानकारी वाले टेंप्लेट वैरिएबल मिलते हैं. आपके ऐप्लिकेशन को state पैरामीटर के अंदर, टेंप्लेट वैरिएबल का एक डिफ़ॉल्ट सेट मिलता है. किसी ऐप्लिकेशन-विशिष्ट ओपन यूआरएल के लिए डिफ़ॉल्ट state जानकारी यह है:

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

इस आउटपुट में ये वैल्यू शामिल होती हैं:

  • ID: पैरंट फ़ोल्डर का आईडी.
  • RESOURCE_KEYS: फ़ाइल आईडी की JSON डिक्शनरी, जो उनसे जुड़ी रिसॉर्स कुंजियों पर मैप की गई होती है.
  • open: की जा रही कार्रवाई. ओपन यूआरएल का इस्तेमाल करने पर वैल्यू open होती है.
  • USER_ID: वह प्रोफ़ाइल आईडी जो उपयोगकर्ता की खास पहचान करता है.

आपके ऐप्लिकेशन को इन चरणों का पालन करके, इन कार्रवाइयों को पूरा करना होगा:

  1. पुष्टि करें कि action फ़ील्ड की वैल्यू open है और ids फ़ील्ड मौजूद है.
  2. उपयोगकर्ता के लिए एक नया सेशन बनाने के लिए, userId वैल्यू का इस्तेमाल करें. साइन इन किए हुए उपयोगकर्ताओं के बारे में ज़्यादा जानकारी के लिए, उपयोगकर्ता और नए इवेंट देखें.
  3. files.get तरीके का इस्तेमाल करके अनुमतियों की जांच करें, फ़ाइल का मेटाडेटा फ़ेच करें, और ID वैल्यू का इस्तेमाल करके फ़ाइल का कॉन्टेंट डाउनलोड करें.
  4. अगर अनुरोध पर resourceKeys सेट किया गया था, तो X-Goog-Drive-Resource-Keys अनुरोध हेडर सेट करें. संसाधन कुंजियों के बारे में ज़्यादा जानकारी के लिए, संसाधन कुंजियों का इस्तेमाल करके, लिंक से शेयर की गई फ़ाइलें ऐक्सेस करें देखें.

state पैरामीटर को यूआरएल के कोड में बदला गया है. इसलिए, आपके ऐप्लिकेशन को एस्केप वर्णों को हैंडल करना चाहिए और उसे JSON के तौर पर पार्स करना चाहिए.

जानकारी सेव करने के लिए किया जा सकता है.

Google Workspace के दस्तावेज़ के लिए किसी ओपन यूआरएल को हैंडल करना

जैसा कि Drive यूज़र इंटरफ़ेस (यूआई) इंटिग्रेशन को कॉन्फ़िगर करें में बताया गया है, आपके ऐप्लिकेशन को state पैरामीटर में टेंप्लेट वैरिएबल का डिफ़ॉल्ट सेट मिलता है. Google Workspace Open URL की डिफ़ॉल्ट state जानकारी यह है:

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

इस आउटपुट में ये वैल्यू शामिल होती हैं:

  • EXPORT_ID: एक्सपोर्ट की जा रही फ़ाइल आईडी की कॉमा-सेपरेटेड लिस्ट. यह सिर्फ़ तब इस्तेमाल किया जाता है, जब पहले से मौजूद Google दस्तावेज़ खोलते हैं.
  • RESOURCE_KEYS: फ़ाइल आईडी की JSON डिक्शनरी, जो उनसे जुड़ी रिसॉर्स कुंजियों पर मैप की गई होती है.
  • open: की जा रही कार्रवाई. ओपन यूआरएल का इस्तेमाल करने पर वैल्यू open होती है.
  • USER_ID: वह प्रोफ़ाइल आईडी जो उपयोगकर्ता की पहचान करती है.

आपके ऐप्लिकेशन को इन चरणों का पालन करके, इन कार्रवाइयों को पूरा करना होगा:

  1. पुष्टि करें कि यह अनुरोध, state फ़ील्ड में open वैल्यू और exportIds फ़ील्ड की मौजूदगी का पता लगाकर, फ़ाइल को खोलने के लिए किया गया है.

  2. files.get तरीके का इस्तेमाल करके अनुमतियों की जांच करें, फ़ाइल का मेटाडेटा फ़ेच करें, और EXPORT_ID वैल्यू का इस्तेमाल करके MIME टाइप तय करें.

  3. files.export तरीके का इस्तेमाल करके, फ़ाइल का कॉन्टेंट बदलें. कोड के इस नमूने में बताया गया है कि Google Workspace दस्तावेज़ को MIME टाइप वाले एक्सपोर्ट में कैसे एक्सपोर्ट किया जाए.

  4. अगर अनुरोध पर resourceKey सेट किया गया था, तो X-Goog-Drive-Resource-Keys अनुरोध हेडर सेट करें. संसाधन कुंजियों के बारे में ज़्यादा जानकारी के लिए, संसाधन कुंजियों का इस्तेमाल करके, लिंक से शेयर की गई फ़ाइलें ऐक्सेस करें देखें.

    Java

    ड्राइव/स्निपेट/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-v3/file_snippet/export_pdf.py
    from __future__ import print_function
    
    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_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_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 पैरामीटर को यूआरएल के कोड में बदला गया है. इसलिए, आपके ऐप्लिकेशन को एस्केप वर्णों को हैंडल करना चाहिए और उसे JSON के तौर पर पार्स करना चाहिए.

उपयोगकर्ता और नए इवेंट

Drive ऐप्लिकेशन को सभी "ओपन इन" इवेंट को संभावित साइन इन की तरह इस्तेमाल करना चाहिए. कुछ उपयोगकर्ताओं के पास एक से ज़्यादा खाते हो सकते हैं, इसलिए हो सकता है कि state पैरामीटर का यूज़र आईडी मौजूदा सेशन से मेल न खाए. अगर state पैरामीटर में मौजूद User-ID, मौजूदा सेशन से मेल नहीं खाता है, तो अपने ऐप्लिकेशन का मौजूदा सेशन खत्म करें और अनुरोध किए गए उपयोगकर्ता के तौर पर साइन इन करें.

Google Drive के यूज़र इंटरफ़ेस (यूआई) से ऐप्लिकेशन खोलने के अलावा, ऐप्लिकेशन में फ़ाइल चुनने के लिए फ़ाइल पिकर दिख सकता है. ज़्यादा जानकारी के लिए, Google पिकर देखें.