在 Google Drive 中使用 Google Spreadsheets API 创建电子表格
Posted
技术标签:
【中文标题】在 Google Drive 中使用 Google Spreadsheets API 创建电子表格【英文标题】:Create spreadsheet using Google Spreadsheets API in Google Drive 【发布时间】:2013-10-22 02:40:59 【问题描述】:我已通过 Google 开发人员指南表格 API 官方文档中提到的简单 Java 代码在我的 Google Drive 帐户的现有电子表格中成功创建了一个新工作表,但我想通过 Java 代码在我的 Google Drive 帐户中创建一个新电子表格。在链接中,他们没有提到任何示例代码。我已经在 Spreadservice 类中看到了不同的方法。
如何使用 Google 电子表格 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);
【问题讨论】:
【参考方案1】:经过一番研究,我找到了这个答案,这很简单。我们无法使用 Google Spreadsheet API 在 Google Drive 中创建新的电子表格。
注意:我们可以通过 Google Spreadsheet API 在已有的 Google Drive 电子表格中创建新的工作表,但不能使用电子表格 API 创建新的电子表格。
要创建和上传新的电子表格或任何其他类型的 Google Drive 支持的文档,我们必须使用 Google Drive api。
这就是我要找的。这样我们就可以使用 google drive api 在 google drive 中创建一个新的电子表格。
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、图像等),我们可以这样做
//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);
【讨论】:
但是你如何处理这个错误呢?com.google.gdata.util.InvalidEntryException: Entry must contain exactly one primary category
必须使用完全限定的包名。有两个 SpreadsheetEntry 类。 WTF 谷歌? entry.getCategories().add(com.google.gdata.data.docs.SpreadsheetEntry.CATEGORY);
【参考方案2】:
您应该使用Google Documents List API 创建新的电子表格。
这个 API 能做什么?
Google 文档列表 API 允许开发人员创建、检索、 更新、删除谷歌文档(包括但不限于文本 文档、电子表格、演示文稿和绘图)、文件和 收藏品。它还提供了一些高级功能,例如资源 档案、光学字符识别、翻译和修订 历史。
【讨论】:
我已经检查了这个链接,但是如何在 java 中做,因为 .NET 中有示例代码而不是 java。即使我试图在 java api 中找到相同的类但没有成功。 很遗憾,此 API 已被弃用。你应该使用google drive api以上是关于在 Google Drive 中使用 Google Spreadsheets API 创建电子表格的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 中使用 Google Drive API
Google Drive 范围 drive.file 不足以将应用拥有的文件复制到应用用户的 Google Drive
从Google colab笔记本中提取Google Drive zip
IOS:如何使用 Google Drive sdk 库将文件上传到特定的 Google Drive 文件夹