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

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

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

הוספת טקסט

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

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

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

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

העברת טקסט

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