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

تتيح لك 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()

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

نقل النص

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