إدراج النص وحذفه ونقله

تتيح لك Google Docs API إدراج نص في مستند أو حذفه. ينطوي نقل النص على كلتا العمليتين، ويسبقهما get للمحتوى.

يمكنك إدراج نص أو حذفه في أيّ من أقسام علامة التبويب في المستند (النص الرئيسي أو الرأس أو التذييل أو الهامش السفلي).

إدراج نص

لإدراج نص في مستند، استخدِم الأسلوب documents.batchUpdate وأدرِج علامة InsertTextRequest مع النص والموقع الجغرافي كحمولة.

يوضّح نموذج الرمز البرمجي التالي كيفية إدراج سلسلة من سلاسل النصوص في مواضع الفهرس المحدّدة في نص المستند. يستخدم المثال ثلاثة إزاحات استهداف (25 و50 و75) ويُدخِل سلسلة من عشرة أحرف في كل موقع.

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

تزيد كل عملية إدراج جميع الفواصل ذات الأرقام الأعلى بمقدار حجم النص المُدرَج. يحسب المثال نتيجة تغييرات الفهرس هذه مسبقًا لكي تتم عمليات الإدراج اللاحقة في الموضع الجديد الذي تم تصحيحه. وبالتالي، لإدراج الإعلان في الموضع المستهدف الأصلي 25 و50 و75، تكون فهارس الإدراج الفعلية هي:

  • تُضيف عملية الإدراج الأولى 10 أحرف في الإزاحة 25.
  • تضيف عملية الإدراج الثانية 10 أحرف في الإزاحة 50+10=60.
  • تضيف عملية الإدراج الثالثة 10 أحرف في الإزاحة 75+10+10=95.

حذف النص

لحذف نص من مستند، عليك أولاً إنشاء Range يحدِّد نطاق النص المطلوب حذفه. بعد ذلك، استخدِم طريقة documents.batchUpdate وأدرِج علامة DeleteContentRangeRequest.

يعرض نموذج الرمز البرمجي التالي كيفية حذف النص بين الفهرس 10 والفهرس 24 في نص المستند.

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

تبسيط الأمور من خلال الكتابة من الخلف كما هو الحال مع عمليات الإدراج، يؤدي حذف النص إلى تغيير فهارس كل النصوص "أسفل" الجزء. مرة أخرى، يمكن أن يؤدي الكتابة بترتيب عكسي إلى تبسيط التعامل مع الفهارس.

نقل النص

لنقل نص، عليك حذفه من مكان ثم إدراجه في مكان آخر. لا يمنحك حذف المحتوى نسخة منه (لا يتوفّر مفهوم مماثل لملف الحافظة)، لذا عليك استخراج محتوى النطاق أولاً حتى تتمكّن من استخدامه في طلب إدراج النص.