Google Docs API'nın yararlı uygulamalarından biri, bilgileri paylaşılan bir dokümandaki veri kaynağını bir belgeye dönüştürmenize yardımcı olur.
Bu sayfada, harici bir kaynaktan verileri nasıl alıp ekleyebileceğiniz açıklanmaktadır. kopyalayıp oluşturabilirsiniz.
Şablon, şablondan oluşturulan tüm dokümanlar için aynı sabit metni ve belirtilen yer tutucuları içeren özel bir doküman türüdür. dinamik metinlerin yerleştirilebileceği bir yere dönüştürün. Örneğin, bir sözleşme şablonunda sabit içeriğin yanı sıra alıcının adı, adresi ve bazı ipuçları vereceğim. Ardından uygulamanız müşteriye özel verileri şablonda birleştirebilir ya da tamamlanmış dokümanlar oluşturmak için.
Bu yaklaşımın faydalı olmasının birkaç nedeni vardır:
Tasarımcılar, öğeleri kullanarak bir dokümanın tasarımında Google Dokümanlar düzenleyicisini kullanabilirsiniz. Bu işlem, kontrol panelinizdeki parametreleri ayarlamaktan uygulamanızı bu düzene sokabilirsiniz.
İçeriği sunudan ayırmak bilinen bir tasarımdır pek çok faydası vardır.
Basit bir yemek tarifi
Aşağıda, verileri bir dokümanda birleştirmek için Docs API'yi nasıl kullanabileceğinize dair bir örnek verilmiştir:
Dokümanınızı şununla oluşturun: yer tutucu içerik ekleyin. Değiştirmek istediğiniz tüm metin biçimlendirmeleri korunur.
Yerleştireceğiniz her öğe için yer tutucu içeriğini kapanış etiketinin hemen öncesine yapıştırın. Normalde oluşma olasılığı düşük dizeler kullandığınızdan emin olun. Örneğin,
{{account-holder-name}}
iyi bir etiket olabilir.Kodunuzda, dokümanın bir kopyasını oluşturmak için Google Drive API'yi kullanın.
Kodunuzda, Docs API'nin
batchUpdate()
yöntemini kullanın: belgenin adını ve e-posta adresiniReplaceAllTextRequest
.
Doküman Kimlikleri bir dokümana referans verir ve URL'den elde edilebilir
https://docs.google.com/document/d/documentId/edit
Örnek
Aşağıdaki örneği ele alalım. Bu örnekte, bir anahtarın tüm sekmelerindeki 2 alanın yerine gerçek değerleri içeren bir şablon görevi görür.
Bu birleştirme işlemini gerçekleştirmek için aşağıdaki kodu kullanabilirsiniz.
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()
Şablonları yönetin
Uygulamanın tanımladığı ve sahip olduğu şablon dokümanları için uygulamayı temsil eden özel bir hesap kullanarak şablon oluşturur. Hizmet hesapları iyi bir seçenektir ve Google Workspace politikalarıyla ilgili paylaşımı kısıtlamalısınız.
Şablonlardan doküman örnekleri oluştururken her zaman şunu kullanın: son kullanıcı kimlik bilgileridir. Böylece kullanıcılar, satın alma işlemi yaparken görüntülenir ve kullanıcı başına görevlerle ilgili ölçeklendirme sorunlarını önler Drive'da sınırlar.
Hizmet hesabı kullanarak şablon oluşturmak için aşağıdaki adımları uygulama kimlik bilgileri:
- Şunu kullanarak doküman oluştur: documents.create aracını kullanın.
- Doküman alıcılarının dokümanı permissions.create Drive API'si.
- Şablon yazarlarının şununla yazmasına izin vermek için izinleri güncelleyin: permissions.create Drive API'si.
- Şablonu gereken şekilde düzenleyin.
Dokümanın bir örneğini oluşturmak için aşağıdaki adımları uygulayın (kullanıcı kimlik bilgileriyle):
- Şunu kullanarak şablonun bir kopyasını oluşturun: files.copy'yi tıklayın.
- Değerleri şunu kullanarak değiştirin: documents.batchUpdate ile ilgili her şeyi öğreteceğim.