Metin ekleme, silme ve taşıma

Google Dokümanlar API, bir dokümana metin eklemenize veya silmenize olanak tanır. Metin taşıma işlemi, içeriğin get ile başlamasından sonra her iki işlemi de içerir.

Doküman sekmesinin herhangi bir bölümüne (gövde, üstbilgi, altbilgi veya dipnot) metin ekleyebilir veya metin silebilirsiniz.

Metin ekle

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

Aşağıdaki kod örneğinde, bir belgenin gövdesinde belirtilen dizin konumlarına nasıl bir dizi metin dizesi ekleyeceğiniz gösterilmektedir. Örnekte üç hedef ofseti (25, 50 ve 75) kullanılmakta ve her konuma on karakterlik bir dize eklenmektedir.

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 boyutuna göre artırır. Örnekte, sonraki eklemelerin yeni ve düzeltilmiş ofsette gerçekleşmesi için bu dizin değişikliklerinin sonucu önceden hesaplanır. Bu nedenle, 25, 50 ve 75 olan orijinal hedef ofsetlerinde ekleme yapmak için gerçek ekleme dizinleri şunlardır:

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

Metin silme

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

anladığınızdan emin olun.

Aşağıdaki kod örneğinde, bir dokümanın gövdesinde 10. dizin ile 24. dizin 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()

Konuları tersten yazarak basitleştirin. Metin eklemelerde olduğu gibi, metin silme işlemi de segmentteki "altındaki" tüm metinlerin dizelerini değiştirir. Yine de geriye doğru yazma, dizinleri işlemenizi basitleştirebilir.

Metni taşıma

Metni taşımak için bir konumda silip başka bir yere eklemeniz gerekir. İçerik silindiğinde kopyası size verilmez (ayrıntı panosuna eşdeğer bir kavram yoktur). Bu nedenle, metin ekleme isteğinizde kullanabilmek için önce aralığın içeriğini ayıklamanız gerekir.