Metin ekleme, silme ve taşıma

Google Dokümanlar API'si, bir dokümana metin eklemenize veya dokümandaki metinleri silmenize olanak tanır. Metin taşıma işlemi, içeriğin get ile ayrıldığı her iki işlemi de içerir.

Bir dokümanın sekmesindeki bölümlerin (gövde, üstbilgi, altbilgi veya dipnot) herhangi birine metin ekleyebilir ya da metin silebilirsiniz.

Metin ekle

Bir dokümana metin eklemek için documents.batchUpdate yöntemini kullanın ve yük olarak metin ve konum içeren bir InsertTextRequest ekleyin.

Aşağıdaki kod örneğinde, bir belge gövdesindeki belirtilen dizin konumlarına bir dizi metin dizesinin nasıl eklenebileceği gösterilmektedir. Örnekte üç hedef ofset (25, 50 ve 75) kullanılıyor ve her konuma on karakterlik bir dize ekleniyor.

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text1)
        .setLocation(new Location().setIndex(25).setTabId(TAB_ID))));

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text2)
        .setLocation(new Location().setIndex(50).setTabId(TAB_ID))));

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text3)
        .setLocation(new Location().setIndex(75).setTabId(TAB_ID))));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

PHP

$requests = array();
$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text1,
        'location' => array(
            'index' => 25,
            'tabId' => TAB_ID,
        ),
    ),
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
            'tabId' => TAB_ID,
        ),
    ),
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
            'tabId' => TAB_ID,
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

requests = [
        {
        'insertText': {
            'location': {
                'index': 25,
                'tabId': TAB_ID
            },
            'text': text1
        }
    },
                {
        'insertText': {
            'location': {
                'index': 50,
                'tabId': TAB_ID
            },
            'text': text2
        }
    },
                {
        'insertText': {
            'location': {
                'index': 75,
                'tabId': TAB_ID
            },
            'text': text3
        }
    },
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Her ekleme, daha yüksek numaralı tüm dizinleri eklenen metnin boyutu kadar artırır. Örnek, bu dizin değişikliklerinin sonucunu önceden hesaplar. Böylece sonraki eklemeler yeni ve düzeltilmiş ofsette gerçekleşir. Bu nedenle, 25, 50 ve 75 olan orijinal hedef ofsetlere eklemek için gerçek ekleme dizinleri şunlardır:

  • İlk ekleme, 25. konumda 10 karakter ekler.
  • İkinci ekleme, 50+10=60 konumuna 10 karakter ekler.
  • Üçüncü ekleme, 75+10+10=95 ofsetinde 10 karakter ekler.

Metni silme

Bir belgeden metin silmek için önce silinecek metin aralığını tanımlayan bir Range oluşturun. Ardından documents.batchUpdate yöntemini kullanın ve DeleteContentRangeRequest ekleyin.

Aşağıdaki kod örneğinde, bir belgenin gövdesinde 10. ve 24. dizinler arasındaki metnin nasıl silinebileceği gösterilmektedir.

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setDeleteContentRange(
        new DeleteContentRangeRequest()
                .setRange(new Range()
                        .setStartIndex(10)
                        .setEndIndex(24)
                        .setTabId(TAB_ID))
    ));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

PHP

$requests = array();
$requests[] = new Google_Service_Docs_Request(array(
    'deleteContentRange' => array(
        'range' => array(
            'startIndex' => 10,
            'endIndex' => 24,
            'tabId' => TAB_ID
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

requests = [
    {
        'deleteContentRange': {
            'range': {
                'startIndex': 10,
                'endIndex': 24,
                'tabId': TAB_ID
            }

        }

    },
]
result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Tersten yazarak işleri kolaylaştırın. Ekleme işleminde olduğu gibi, metin silme işlemi de segmentteki "alttaki" tüm metinlerin dizinlerini değiştirir. Yine, geriye doğru yazmak dizinleri işlemenizi kolaylaştırabilir.

Metni taşıma

Metni taşımak için metni bir konumda silip başka bir yere eklersiniz. İçeriği sildiğinizde kopyasını almazsınız (pano gibi bir kavram yoktur). Bu nedenle, ekleme metni isteğinizde kullanabilmek için önce aralıktaki içeriği çıkarmanız gerekir.