Google दस्तावेज़ API का एक उपयोगी ऐप्लिकेशन एक से जानकारी मर्ज करना है एक या उससे ज़्यादा डेटा सोर्स का इस्तेमाल किया जा सकता है.
इस पेज में बताया गया है कि किसी बाहरी सोर्स से डेटा लेकर उसे कैसे शामिल किया जा सकता है एक मौजूदा टेम्प्लेट दस्तावेज़ में कॉपी कर सकते हैं.
टेंप्लेट खास तरह का दस्तावेज़ होता है. इसमें, तय किए गए प्लेसहोल्डर के साथ-साथ टेंप्लेट से बनाए गए सभी दस्तावेज़ों के लिए एक जैसा टेक्स्ट होता है जहां अन्य डाइनैमिक टेक्स्ट को रखा जा सकता है. उदाहरण के लिए, कॉन्ट्रैक्ट टेंप्लेट में कॉन्टेंट पाने वाले के नाम, पते, और अन्य विवरण. इसके बाद, आपका ऐप्लिकेशन, ग्राहक से जुड़े डेटा को टेंप्लेट में मर्ज कर सकता है पर क्लिक करें.
यह तरीका उपयोगी होने के कई कारण हैं:
किसी दस्तावेज़ के डिज़ाइन को बेहतर बनाने के लिए, डिज़ाइनर Google Docs एडिटर्स पर जाकर, यह पैरामीटर ट्यूनिंग से कहीं ज़्यादा आसान है आपके ऐप्लिकेशन का इस्तेमाल करके, रेंडर किए गए लेआउट को सेट किया जा सकता है.
प्रज़ेंटेशन से कॉन्टेंट को अलग करना एक जाना-माना डिज़ाइन है साथ ही, कई फ़ायदे भी मिलते हैं.
एक बुनियादी रेसिपी
दस्तावेज़ में डेटा मर्ज करने के लिए, Docs API का इस्तेमाल करने का तरीका यहां दिया गया है:
इसका इस्तेमाल करके अपना दस्तावेज़ बनाएं प्लेसहोल्डर कॉन्टेंट का इस्तेमाल करें. जिस टेक्स्ट फ़ॉर्मैटिंग को बदलना है उसे सुरक्षित रखा जाता है.
आपके डाले जाने वाले हर एलिमेंट के लिए, प्लेसहोल्डर कॉन्टेंट को टैग के साथ जोड़ा जा सकता है. ऐसी स्ट्रिंग का इस्तेमाल करें जिनके सामान्य रूप से आने की संभावना न हो. उदाहरण के लिए,
{{account-holder-name}}
एक अच्छा टैग हो सकता है.अपने कोड में, दस्तावेज़ की कॉपी बनाने के लिए Google Drive API का इस्तेमाल करें.
अपने कोड में, Docs API के
batchUpdate()
तरीके का इस्तेमाल दस्तावेज़ का नाम डालें और उसमेंReplaceAllTextRequest
.
दस्तावेज़ आईडी किसी दस्तावेज़ का रेफ़रंस देते हैं और उन्हें यूआरएल से लिया जा सकता है
https://docs.google.com/document/d/documentId/edit
उदाहरण
नीचे दिए गए उदाहरण पर गौर करें. यह एक ऐसा उदाहरण है जो असली वैल्यू वाले टेंप्लेट की मदद से, तैयार दस्तावेज़ जनरेट किया जा सकता है.
डेटा मर्ज करने के लिए, नीचे दिया गया कोड इस्तेमाल करें.
Java
String customerName = "Alice"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); String date = formatter.format(LocalDate.now()); List<Request> requests = new ArrayList<>(); // One option for replacing all text is to specify all tab IDs. requests.add(new Request() .setReplaceAllText(new ReplaceAllTextRequest() .setContainsText(new SubstringMatchCriteria() .setText("{{customer-name}}") .setMatchCase(true)) .setReplaceText(customerName) .setTabsCriteria(new TabsCriteria() .addTabIds(TAB_ID_1) .addTabIds(TAB_ID_2) .addTabIds(TAB_ID_3)))); // Another option is to omit TabsCriteria if you are replacing across all tabs. requests.add(new Request() .setReplaceAllText(new ReplaceAllTextRequest() .setContainsText(new SubstringMatchCriteria() .setText("{{date}}") .setMatchCase(true)) .setReplaceText(date))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest(); service.documents().batchUpdate(documentId, body.setRequests(requests)).execute();
Node.js
let customerName = 'Alice'; let date = yyyymmdd() let requests = [ // One option for replacing all text is to specify all tab IDs. { replaceAllText: { containsText: { text: '{{customer-name}}', matchCase: true, }, replaceText: customerName, tabsCriteria: { tabIds: [TAB_ID_1, TAB_ID_2, TAB_ID_3], }, }, }, // Another option is to omit TabsCriteria if you are replacing across all tabs. { replaceAllText: { containsText: { text: '{{date}}', matchCase: true, }, replaceText: date, }, }, ]; google.options({auth: auth}); google .discoverAPI( 'https://docs.googleapis.com/$discovery/rest?version=v1&key={YOUR_API_KEY}') .then(function(docs) { docs.documents.batchUpdate( { documentId: '1yBx6HSnu_gbV2sk1nChJOFo_g3AizBhr-PpkyKAwcTg', resource: { requests, }, }, (err, {data}) => { if (err) return console.log('The API returned an error: ' + err); console.log(data); }); });
Python
customer_name = 'Alice' date = datetime.datetime.now().strftime("%y/%m/%d") requests = [ # One option for replacing all text is to specify all tab IDs. { 'replaceAllText': { 'containsText': { 'text': '{{customer-name}}', 'matchCase': 'true' }, 'replaceText': customer_name, 'tabsCriteria': { 'tabIds': [TAB_ID_1, TAB_ID_2, TAB_ID_3], }, }}, # Another option is to omit TabsCriteria if you are replacing across all tabs. { 'replaceAllText': { 'containsText': { 'text': '{{date}}', 'matchCase': 'true' }, 'replaceText': str(date), } } ] result = service.documents().batchUpdate( documentId=document_id, body={'requests': requests}).execute()
टेंप्लेट मैनेज करें
ऐप्लिकेशन जिन टेंप्लेट दस्तावेज़ों को परिभाषित करता है और उनका मालिक है उनके लिए, बनाएं ऐप्लिकेशन की जानकारी देने वाले खाते का इस्तेमाल करके, टेंप्लेट तैयार किया हो. सेवा खाते यह एक अच्छा विकल्प है. साथ ही, इन समस्याओं से बचने के लिए, Google Workspace की नीतियों को शेयर करने पर पाबंदी लगाएं.
टेंप्लेट से दस्तावेज़ों के इंस्टेंस बनाते समय, हमेशा असली उपयोगकर्ता के क्रेडेंशियल. इससे उपयोगकर्ताओं को नतीजे के तौर पर इकट्ठा किया जाता है और हर उपयोगकर्ता से जुड़ी समस्याओं को स्केल करने से रोकता है Drive में मौजूद स्टोरेज से जुड़ी सीमाएं.
सेवा खाते का इस्तेमाल करके टेंप्लेट बनाने के लिए, यह तरीका अपनाएं ऐप्लिकेशन क्रेडेंशियल:
- इसका इस्तेमाल करके दस्तावेज़ बनाएं documents.create को Docs API में सबमिट करना चाहिए.
- दस्तावेज़ पाने वाले लोगों को इसे पढ़ने की अनुमति देने के लिए, अनुमतियों को अपडेट करें इसमें permissions.create शामिल करें Drive API.
- अनुमतियों को अपडेट करें, ताकि वे इसका इस्तेमाल करके टेंप्लेट लेखकों पर लिख सकें इसमें permissions.create शामिल करें Drive API.
- ज़रूरत के हिसाब से टेंप्लेट में बदलाव करें.
दस्तावेज़ का इंस्टेंस बनाने के लिए, नीचे दिया गया तरीका अपनाएं इन शर्तों को पूरा करने के लिए:
- का उपयोग करके टेम्प्लेट की एक कॉपी बनाएं files.copy कॉपी करना होगा.
- इसका इस्तेमाल करके वैल्यू बदलें documents.batchUpdate दस्तावेज़ एपीआई में उपलब्ध है.