Создайте электронную таблицу с помощью Google Spreadsheets API на Google Диске

Я успешно создал новый рабочий лист в существующей электронной таблице учетной записи «Мой Google Диск» с помощью простого кода Java, упомянутого в официальной документации Google по API-интерфейсу для разработчиков, но хочу создать новую электронную таблицу в своей учетной записи на Google Диске с помощью кода Java. В ссылке они не упомянули какой-либо образец кода для этого. Я уже видел разные методы, доступные в классе Spreadservice.

Как это сделать с помощью Google Spreadsheets API?

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import com.google.gdata.client.spreadsheet.*;
import com.google.gdata.data.Link;
import com.google.gdata.data.PlainTextConstruct;
import com.google.gdata.data.TextConstruct;
import com.google.gdata.data.docs.ExportFormat;
import com.google.gdata.data.spreadsheet.*;
import com.google.gdata.util.*;


import java.io.IOException;
import java.net.*;
import java.util.*;
import javax.xml.soap.Text;


    /**
     *
     * @author satyam
     */
    public class SpreadSheet {

        public static void main(String[] args)
                throws AuthenticationException, MalformedURLException, IOException, ServiceException {

            SpreadsheetService service =   new SpreadsheetService("gBuddy");

            // TODO: Authorize the service object for a specific user (see other sections)
            String USERNAME = "USERNAME";
            String PASSWORD = "PASSWORD";

            service.setUserCredentials(USERNAME, PASSWORD);


            // Define the URL to request.  This should never change.
            URL SPREADSHEET_FEED_URL = new URL(
                    "https://spreadsheets.google.com/feeds/spreadsheets/private/full");

            // Make a request to the API and get all spreadsheets.
            SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class);
            List<SpreadsheetEntry> spreadsheets = feed.getEntries();

            // Iterate through all of the spreadsheets returned
            for (SpreadsheetEntry spreadsheet : spreadsheets) {
    //             Print the title of this spreadsheet to the screen;
                System.out.println(spreadsheet.getTitle().getPlainText());
            }

            SpreadsheetEntry spreadsheet = spreadsheets.get(1);
    //        System.out.println(spreadsheet.getTitle().getPlainText());

    //        // Create a local representation of the new worksheet.
            WorksheetEntry worksheet = new WorksheetEntry();
            worksheet.setTitle(new PlainTextConstruct("New Worksheet"));
            worksheet.setColCount(10);
            worksheet.setRowCount(20);

            // Send the local representation of the worksheet to the API for
            // creation.  The URL to use here is the worksheet feed URL of our
            // spreadsheet.
            URL worksheetFeedUrl = spreadsheet.getWorksheetFeedUrl();
            WorksheetEntry insert = service.insert(worksheetFeedUrl, worksheet);
        }
    }

person Satyam Koyani    schedule 14.10.2013    source источник


Ответы (2)


Это просто, после некоторых исследований я нашел этот ответ. Мы не можем создать новую электронную таблицу на Google Диске с помощью Google Spreadsheet API.

ПРИМЕЧАНИЕ. мы можем создать новую таблицу в уже существующей электронной таблице на Google Диске с помощью Google Spreadsheet API, но не можем создать новую электронную таблицу с помощью API электронной таблицы.

Для создания и загрузки новой электронной таблицы или любого другого документа, поддерживаемого Google Drive, мы должны использовать Google Drive api.

Это то, что я ищу. Таким образом, мы можем создать новую электронную таблицу на диске Google с помощью API диска Google.

    DocsService docsService = new DocsService("MySampleApplication-v3");
    docsService.setUserCredentials(USERNAME, PASSWORD);
    URL GOOGLE_DRIVE_FEED_URL = new URL("https://docs.google.com/feeds/default/private/full/");
    DocumentListEntry documentListEntry = new com.google.gdata.data.docs.SpreadsheetEntry();
    documentListEntry.setTitle(new PlainTextConstruct("Spreadsheet_name"));
    documentListEntry = docsService.insert(GOOGLE_DRIVE_FEED_URL, documentListEntry);

Для создания новой электронной таблицы мы должны создать объект new SpreadsheetEntry(), а для любого другого документа мы должны создать объект new DocumentEntry().

СЕЙЧАС Если нам нужно загрузить какой-либо документ (xls, doc, изображение и т. Д.) На диск Google, мы можем сделать это следующим образом

//File upload in google drive
        DocumentListEntry uploadFile = new DocumentListEntry();
        uploadFile.setTitle(new PlainTextConstruct("FILE_NAME_DISPLAY_IN_DRIVE"));
        uploadFile.setFile(new File("FILE_PATH"), "MIME_TYPE_OF_FILE");
        uploadFile = docsService.insert(GOOGLE_DRIVE_FEED_URL, uploadFile);
person Satyam Koyani    schedule 14.10.2013
comment
Но как бороться с этой ошибкой? com.google.gdata.util.InvalidEntryException: Entry must contain exactly one primary category - person Chloe; 06.12.2013
comment
Пришлось использовать полное имя пакета. Есть ДВА класса SpreadsheetEntry. Какого черта Google? entry.getCategories().add(com.google.gdata.data.docs.SpreadsheetEntry.CATEGORY); - person Chloe; 06.12.2013

Для создания новых электронных таблиц следует использовать API списка документов Google.

Что умеет этот API?

API списка документов Google позволяет разработчикам создавать, извлекать, обновлять и удалять документы Google (включая, помимо прочего, текстовые документы, электронные таблицы, презентации и рисунки), файлы и коллекции. Он также предоставляет некоторые расширенные функции, такие как архивы ресурсов, оптическое распознавание символов, перевод и историю изменений.

person Guillaume    schedule 14.10.2013
comment
Я уже проверял эту ссылку, но как это сделать в java, поскольку в .NET есть образец кода, а не в java. Даже я пытался найти тот же класс в java api, но безуспешно. - person Satyam Koyani; 14.10.2013
comment
К сожалению, этот API устарел. Вам следует использовать google drive api - person user1067920; 02.11.2014