我发现了多个关于如何使用 Google Spreadsheets API 创建或编辑 Google Doc 电子表格的 StackOverflow 问题。 ,或更旧的 API。但是,这个电子表格 API 似乎是“gdata”库的一部分,据我所知,它已被弃用。
Newer StackOverflow answers展示如何使用 Drive API 创建一个空电子表格,它看起来更流行。但是,从查看该 API 的文档和示例来看,它似乎只允许您使用电子表格 MIME 类型创建新的 EMPTY 文件。我还没有找到任何用于创建包含实际内容(即行、列、工作表等)的电子表格的功能。
创建新的 Google Doc 电子表格并为其填充内容的当前流程是什么? Drive API 是否具有我不理解的功能? “gdata”库(或至少它的电子表格 API 部分)毕竟没有被完全弃用吗?有没有我完全错过的第三种方法?我正在使用 Java 代码,这在一定程度上很重要,尽管我确信任何 Python API 都会有一个 Java 等价物。
最佳答案
引用新的电子表格 API v4
我有最好和最简单的方法:
步骤 1
创建 AsyncTask 类,将“GoogleAccountCredential 凭据”传递给它。
步骤 2
使用 API 创建新的电子表格。
代码
private class MakeRequestTask extends AsyncTask<Void, Void, Void> {
private com.google.api.services.sheets.v4.Sheets mService = null;
// The constructor
MakeRequestTask(GoogleAccountCredential credential) {
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
mService = new com.google.api.services.sheets.v4.Sheets.Builder(
transport, jsonFactory, credential)
.setApplicationName("Android spreadsheet client")
.build();
}
protected void doInBackground(Void... params) {
// function to create the spreadsheet
creadSpreadSheet();
}
// creates a new spreadsheet
private void creadSpreadSheet() throws IOException{
com.google.api.services.sheets.v4.model.Spreadsheet mSpreadsheet, newSpreadSheet;
mSpreadsheet = new Spreadsheet();
SpreadsheetProperties spreadsheetProperties = new SpreadsheetProperties();
spreadsheetProperties.setTitle("Demo SpreadSheet");// name of your spreadsheet
mSpreadsheet = mSpreadsheet.setProperties(spreadsheetProperties);
newSpreadSheet = mService.spreadsheets()
.create(mSpreadsheet)
.execute();
// this 'newSpreadsheet' is ready to use for write/read operation.
}
}
注意:
不要忘记将“SheetsScopes.SPREADSHEETS”范围放在 onCreate() 的“凭据”中。
String[] SCOPES = { SheetsScopes.SPREADSHEETS};
credential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), Arrays.asList(SCOPES))
.setBackOff(new ExponentialBackOff());
关于google-drive-api - 如何以编程方式创建包含内容的 Google Docs 电子表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217995/