הוספה, מחיקה והעברה של טקסט

ב-Google Docs API אפשר להוסיף או למחוק טקסט במסמך. העברת טקסט כוללת את שתי הפעולות ולפניה get של התוכן.

אפשר להוסיף או למחוק טקסט בכל אחד ממקטעי המסמך (גוף, כותרת עליונה, כותרת תחתונה או הערת שוליים).

הוספת טקסט

כדי להוסיף טקסט למסמך, משתמשים ב-method documents.batchUpdate וכוללים InsertTextRequest עם הטקסט והמיקום כמטען הייעודי (Payload).

דוגמת הקוד הבאה ממחישה איך מוסיפים סדרה של מחרוזות טקסט במיקומי אינדקס ספציפיים בגוף המסמך. הדוגמה משתמשת בשלושה קיזוזי יעד (25, 50 ו-75) ומכניסה מחרוזת בת 10 תווים לכל מיקום.

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 שמגדיר את טווח הטקסט למחיקה. אחר כך משתמשים ב-method 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()

כדי לפשט את העניינים, כותבים אחורה. בדומה להוספות, מחיקת טקסט משנה את האינדקסים של כל הטקסט "מתחת" בקטע. שוב, כתיבה לאחור יכולה לפשט את הטיפול באינדקסים.

הזזת הטקסט

כדי להעביר טקסט, מוחקים אותו במיקום אחד ומוסיפים אותו למקום אחר. מחיקת התוכן לא מספקת עותק שלו (אין רעיון מקביל של לוח) ולכן עליכם לחלץ קודם את תוכן הטווח כדי שתוכלו להשתמש בו בבקשת הוספת הטקסט.