درج، حذف و انتقال متن

Google Docs API به شما امکان می دهد متن را در یک سند درج یا حذف کنید. حرکت متن شامل هر دو عملیات است که قبل از get محتوا انجام می شود.

می توانید متن را در هر یک از بخش های برگه سند (بدنه، سرصفحه، پاورقی یا پاورقی) درج یا حذف کنید.

درج متن

برای درج متن در یک سند، از روش documents.batchUpdate استفاده کنید و یک InsertTextRequest با متن و مکان به عنوان بار وارد کنید.

نمونه کد زیر نشان می دهد که چگونه می توانید یک سری رشته های متنی را در مکان های شاخص مشخص شده در بدنه یک سند وارد کنید. این مثال از سه افست هدف (25، 50 و 75) استفاده می کند و یک رشته ده کاراکتری را در هر مکان درج می کند.

جاوا

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);

پایتون

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()

هر درج تمام نمایه های با شماره بالاتر را بر اساس اندازه متن درج شده افزایش می دهد. این مثال نتیجه این تغییرات شاخص را از قبل محاسبه می کند تا درج های بعدی در افست جدید و اصلاح شده اتفاق بیفتد. بنابراین برای درج در افست های هدف اصلی 25، 50 و 75، شاخص های درج واقعی عبارتند از:

  • درج اول 10 کاراکتر در افست 25 اضافه می کند.
  • درج دوم 10 کاراکتر در افست 50+10=60 اضافه می کند.
  • درج سوم 10 کاراکتر در افست 75+10+10=95 اضافه می کند.

متن را حذف کنید

برای حذف متن از یک سند، ابتدا Range ای بسازید که محدوده متنی را که باید حذف شود را مشخص می کند. سپس از روش documents.batchUpdate استفاده کنید و یک DeleteContentRangeRequest اضافه کنید.

نمونه کد زیر نشان می دهد که چگونه می توانید متن بین نمایه 10 و نمایه 24 را در بدنه یک سند حذف کنید.

جاوا

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);

پایتون

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

        }

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

با نوشتن برعکس مسائل را ساده کنید. مانند درج‌ها، حذف متن نمایه‌های تمام متن «زیر» در بخش را تغییر می‌دهد. باز هم، نوشتن به عقب می تواند مدیریت شما را با شاخص ها ساده کند.

انتقال متن

برای جابجایی متن، آن را در یک مکان حذف می‌کنید و سپس آن را در جای دیگری درج می‌کنید. حذف محتوا یک کپی از آن را به شما نمی دهد (مفهومی معادل کلیپ بورد وجود ندارد) بنابراین ابتدا باید محتویات محدوده را استخراج کنید تا بتوانید در درخواست درج متن خود از آن استفاده کنید.