2016-07-01 28 views
0

Googlesのウェブサイトのガイドに従っています。私のOAuthキーは正しく設定されていますが、このセル抽出コードをJavaで動作させることはできません。GoogleスプレッドシートAPIのバグ

エラーメッセージは次のとおりです。スレッドで

例外 "メイン" でjava.lang.Error:未解決のコンパイルの問題: 型の不一致は:

at com.wow.trading.WOWTrading.MySpreadsheetIntegration.main(MySpreadsheetIntegration.java:51) 

コードは正確であるCellEntryに要素型のSpreadsheetEntryから変換することはできませんGoogleのウェブサイトとJARが欠けているわけではありません。

package com.wow.trading.WOWTrading; 
import com.google.gdata.client.spreadsheet.*; 
import com.google.gdata.data.spreadsheet.*; 
import com.google.gdata.util.*; 

import java.io.IOException; 
import java.net.*; 
import java.util.*; 

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

    SpreadsheetService service = 
     new SpreadsheetService("MySpreadsheetIntegration-v1"); 

    // TODO: Authorize the service object for a specific user (see other  sections) 

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

    if (spreadsheets.size() == 0) { 
     // TODO: There were no spreadsheets, act accordingly. 
    } 

    // TODO: Choose a spreadsheet more intelligently based on your 
    // app's needs. 
    SpreadsheetEntry spreadsheet = spreadsheets.get(0); 
    System.out.println(spreadsheet.getTitle().getPlainText()); 

    // Get the first worksheet of the first spreadsheet. 
    // TODO: Choose a worksheet more intelligently based on your 
    // app's needs. 
    WorksheetFeed worksheetFeed = service.getFeed(
     spreadsheet.getWorksheetFeedUrl(), WorksheetFeed.class); 
    List<WorksheetEntry> worksheets = worksheetFeed.getEntries(); 
    WorksheetEntry worksheet = worksheets.get(0); 

    // Fetch the cell feed of the worksheet. 
    URL cellFeedUrl = worksheet.getCellFeedUrl(); 
    CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class); 

    // Iterate through each cell, updating its value if necessary. 
    // TODO: Update cell values more intelligently. 
    **for (CellEntry cell : feed.getEntries()) {** 
     if (cell.getTitle().getPlainText().equals("A1")) { 
     cell.changeInputValueLocal("200"); 
     cell.update(); 
     } else if (cell.getTitle().getPlainText().equals("B1")) { 
     cell.changeInputValueLocal("=SUM(A1, 200)"); 
     cell.update(); 
     } 
    } 
    } 
} 
+0

あなたの質問は何ですか? – SunSparc

答えて

1

は、私はGoogleスプレッドシートのAPIを使用したことがありませんが、あなたが強調されてきたラインは、私にはかなり明確であるエラーがあります。

変数feedSpreadsheetFeedです。スプレッドシート、ワークシート、セルのためにいくつかの「フィード」オブジェクトがあるので、feedからspreadsheetFeedに名前を変更するのが良いでしょう。あなたはすでにワークシート(worksheetFeed)とセル(cellFeed)でこれをやっているので、なぜスプレッドシートも使っていないのですか?

あなたはその後、上にハイライトされたコードの行は、現在エラーが明らかなことでうまくいけば、

for (CellEntry cell : spreadsheetFeed.getEntries()) { 

となり、それを行う場合。私はあなたが望んでいると思っています

for (CellEntry cell : cellFeed.getEntries()) { 

代わりに。

関連する問題