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

تتيح لك واجهة برمجة تطبيقات "مستندات Google" إدراج نص في مستند أو حذفه. وتتضمّن عملية نقل النص كلتا العمليتين، مسبوقة بـ 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))));

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

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

        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,
        ),
    ),
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
        ),
    ),
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
        ),
    ),
));

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

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

Python

    requests = [
         {
            'insertText': {
                'location': {
                    'index': 25,
                },
                'text': text1
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 50,
                },
                'text': text2
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 75,
                },
                '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))
            ));

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

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

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

Python

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

            }

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

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

نقل النص

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