如何以编程方式创建包含内容的Google文档电子表格?

时间:2014-01-19 14:28:53

标签: google-drive-api google-sheets google-docs google-docs-api google-spreadsheet-api

我发现了多个StackOverflow问题,涉及如何使用Google Spreadsheets API或旧版API创建或编辑Google文档电子表格。但是,这个Spreadsheets API似乎是“gdata”库的一部分,根据我的理解,这个库已被弃用。

Newer StackOverflow answers显示了如何使用Drive API创建一个空电子表格,这似乎更新。但是,通过查看该API的文档和示例,它似乎只允许您使用电子表格MIME类型创建新的EMPTY文件。我没有找到任何创建包含实际内容(即行,列,工作表等)的电子表格的功能。

创建新的Google Doc电子表格并用内容填充它的当前流程是什么? Drive API是否具有我不理解的功能? “gdata”库(或者至少它的Spreadsheets API部分)毕竟没有被完全弃用吗?是否有一些我完全错过的第三种方法?我正在使用Java代码,尽管我确信任何Python API都具有Java等价物。

3 个答案:

答案 0 :(得分:2)

以子弹形式回答......

  • 这是旧的docslist API,不推荐使用。由于没有替换
  • ,电子表格API仍处于活动状态
  • 可能不再支持gdata库,但无论如何直接使用电子表格API可能会更好。
  • Drive API仅关注整个文件级别的操作
  • 您可以使用Drive API创建一个已填充的电子表格,方法是将文件上传为可转换为Google电子表格的格式,例如。 MS Excel
  • 请注意,电子表格API(可能还有Drive API)尚不支持新的(2013年底)电子表格格式

答案 1 :(得分:2)

参考新的电子表格API v4

我有最好的方法:

第1步

创建AsyncTask类,将“GoogleAccountCredential凭证”传递给它。

第2步

使用API​​创建新的SpreadSheet。

<强> CODE

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

答案 2 :(得分:0)

Google-apps-script还会创建Spreadsheets并允许您添加数据。 见https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app 它可以比GData api做更多,即google-apps-script可以设置单元格字体/颜色等。

但是根据你的需要,GData的风格很低,所以我觉得它更快。 有一个简单的谷歌GData演示CellDemo.java。 http://gdata-java-client.googlecode.com/svn-history/r51/trunk/java/sample/spreadsheet/cell/CellDemo.java 它展示了Gdata Spreadsheets API功能。