0

我正在嘗試從Google電子表格中讀取值。從電子表格中讀取值

String range = "A1:20"; 
    ValueRange response = sheet.spreadsheets().values().get(spreadsheetId, range) 
      .execute(); 

    List<List<Object>> values = response.getValues(); 
    if (values == null || values.size() == 0) { 
     System.out.println("No data found."); 
    } else { 
     System.out.println("Name, Major"); 
     System.out.println(values); 
     for (List row : values) { 
      // Print columns A and E, which correspond to indices 0 and 4. 
      System.out.printf("%s\n", row.get(0)); 
     } 
    } 

我有一個包含多行和多列的電子表格。我需要閱讀工作表中的所有數據。上面的代碼工作正常,讀取第一列的20行,但我無法設置範圍變量值自動讀取表中的所有行和列。

另外我想在服務器端讀取json格式的每一列的數據類型。

+0

我用值範圍爲「1:30」返回我的所有列,但30行。請大家幫我設置範圍值,這樣我就可以得到表格中的所有行。 –

回答

0

如果我理解正確,你想使用getDataRange()在整個表中的數據在這裏找到:

https://developers.google.com/apps-script/reference/spreadsheet/sheet#getDataRange()

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 

// This represents ALL the data 
var range = sheet.getDataRange(); 

// This get the values 
var values = range.getValues(); 
+0

根據我的要求,我需要在服務器端調用數據我已經給出了上面的代碼,並需要設置適當的值的範圍變量,以便我將所有列和行到列表對象。 –

0

如果您需要從客戶機到片打電話那麼我有這個我經常使用的代碼。請注意,該表格需要發佈,並設置爲任何具有鏈接可查看的人員。你還需要jQuery。注意工作表網址對json的影響。列標題的前綴爲「gsx $」,然後設置爲小寫,並刪除空格。

//https://docs.google.com/spreadsheets/d/1OY18xmnT-O4AWzGDC63RvzzmNgyKHOnuvq-RX6M_6xw/edit#gid=0 
 

 
var spreadsheetID = "1OY18xmnT-O4AWzGDC63RvzzmNgyKHOnuvq-RX6M_6xw"; 
 
var url = "https://spreadsheets.google.com/feeds/list/" + spreadsheetID + "/1/public/values?alt=json"; 
 
$.getJSON(url, function(incomingData) { 
 
\t data = incomingData; 
 
    var entry = data.feed.entry; 
 
    showData(entry) 
 
}); 
 

 
function showData(entry){ 
 
    for (var items in entry){ 
 
\t \t console.log(entry[items].gsx$fruit.$t +": "+ entry[items].gsx$number.$t) 
 
} 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
    <script src="https://code.jquery.com/jquery-3.1.0.js"></script> 
 
    
 
</head> 
 
<body> 
 

 
</body> 
 
</html>

+0

我很感謝你的解決方案。但根據我的要求,我需要在服務器端調用數據我已經給出了上面的代碼,並需要設置具有適當值的範圍變量,以便我將所有列和行放入List對象中。 –

0

見在Simple Mail合併教程的完整代碼讀取數據的好辦法。尤其是getRowsData()函數的部分向下。它將讀取連續的所有數據。

對於您的範圍,上面提到的代碼的前三行將爲您提供所需的內容。我修改他們略低於獲得代表所有工作表Sheet1的範圍:

var ss = SpreadsheetApp.openById(spreadsheetId); 
var dataSheet = ss.getSheetByName('Sheet1'); 
var dataRange = dataSheet.getRange(2, 1, dataSheet.getMaxRows() - 1, 4);