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

تتيح لك 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(<var>TAB_ID</var>))));

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text2)
        .setLocation(new Location().setIndex(50).setTabId(<var>TAB_ID</var>))));

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text3)
        .setLocation(new Location().setIndex(75).setTabId(<var>TAB_ID</var>))));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();

PHP

$requests = array();

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text1,
        'location' => array(
            'index' => 25,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

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

$response = $service->documents->batchUpdate($<var>DOCUMENT_ID</var>, $batchUpdateRequest);

Python

requests = [
        {
        'insertText': {
            'location': {
                'index': 25,
                'tabId': <var>TAB_ID</var>
            },
            'text': text1
        }
    },
                {
        'insertText': {
            'location': {
                'index': 50,
                'tabId': <var>TAB_ID</var>
            },
            'text': text2
        }
    },
                {
        'insertText': {
            'location': {
                'index': 75,
                'tabId': <var>TAB_ID</var>
            },
            'text': text3
        }
    },
]

result = service.documents().batchUpdate(
    documentId=<var>DOCUMENT_ID</var>, 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(<var>TAB_ID</var>))
    ));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();

PHP

$requests = array();
$requests[] = new Google_Service_Docs_Request(array(
    'deleteContentRange' => array(
        'range' => array(
            'startIndex' => 10,
            'endIndex' => 24,
            'tabId' => <var>TAB_ID</var>
        ),
    ),
));

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

$response = $service->documents->batchUpdate(<var>DOCUMENT_ID</var>, $batchUpdateRequest);

Python

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

        }

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

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

نقل النص

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