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

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

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

متن را وارد کنید

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

نمونه کد زیر نشان می‌دهد که چگونه می‌توانید مجموعه‌ای از رشته‌های متنی را در مکان‌های مشخص شده در فهرست در بدنه یک سند وارد کنید. این مثال از سه فاصله هدف (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();

پی اچ پی

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

هر درج، تمام اندیس‌های با شماره بالاتر را به اندازه متن درج شده افزایش می‌دهد. این مثال نتیجه این تغییرات اندیس را از قبل محاسبه می‌کند تا درج‌های بعدی در آفست جدید و اصلاح‌شده انجام شوند. بنابراین برای درج در آفست‌های هدف اصلی ۲۵، ۵۰ و ۷۵، اندیس‌های درج واقعی عبارتند از:

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

حذف متن

برای حذف متن از یک سند، ابتدا یک Range ایجاد کنید که محدوده متن مورد نظر برای حذف را تعریف کند. سپس از متد documents.batchUpdate استفاده کنید و یک DeleteContentRangeRequest در آن قرار دهید.

نمونه کد زیر نشان می‌دهد که چگونه می‌توانید متن بین اندیس ۱۰ و اندیس ۲۴ را در بدنه یک سند حذف کنید.

جاوا

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

پی اچ پی

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

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

متن را جابجا کنید

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