באמצעות Google Docs API אפשר להוסיף או למחוק טקסט במסמך. העברת טקסט כוללת את שתי הפעולות האלה, אחרי get
של התוכן.
אפשר להוסיף או למחוק טקסט בכל אחד מהקטעים (גוף, כותרת עליונה, כותרת תחתונה או הערת שוליים) של כרטיסייה במסמך.
הוספת טקסט
כדי להוסיף טקסט למסמך, משתמשים בשיטה documents.batchUpdate
וכוללים InsertTextRequest
עם הטקסט והמיקום כמטען הייעודי (payload).
בדוגמת הקוד הבאה אפשר לראות איך להוסיף סדרה של מחרוזות טקסט במיקומי אינדקס ספציפיים בגוף המסמך. בדוגמה נעשה שימוש בשלושה היסטים של יעד (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()
כדאי לכתוב הפוך כדי לפשט את העניינים. בדומה להוספות, מחיקת טקסט משנה את האינדקסים של כל הטקסט 'מתחת' בפלח. שוב, כתיבה הפוכה יכולה לפשט את הטיפול באינדקסים.
העברת טקסט
כדי להעביר טקסט, מוחקים אותו במיקום אחד ואז מוסיפים אותו במקום אחר. מחיקת תוכן לא מאפשרת לקבל עותק שלו (אין מושג מקביל ללוח), ולכן צריך קודם לחלץ את התוכן של הטווח כדי להשתמש בו בבקשה להוספת טקסט.