从电子表格中读取值

时间:2017-01-02 18:32:36

标签: google-sheets google-spreadsheet-api google-api-java-client

我正在尝试从谷歌电子表格中读取值。

    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格式读取每列的数据类型。

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

如果您需要从客户端调用表单,那么我会使用我经常使用的代码。请注意,需要发布工作表,并将其设置为链接可以查看的任何人。你还需要jquery。注意表格URL输出到json的方式。列标题的前缀为&#34; gsx $&#34;然后设置为小写,删除空格。

&#13;
&#13;
//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) {
	data = incomingData;
    var entry = data.feed.entry;
    showData(entry)
});

function showData(entry){
  for (var items in entry){
		console.log(entry[items].gsx$fruit.$t +": "+ entry[items].gsx$number.$t )
}
}
&#13;
<!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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

请参阅Simple Mail合并教程中的完整代码,了解读取数据的好方法。特别是来自getRowsData()函数的部分。它将连续读取所有数据。

对于您的范围,上述代码的前3行可以满足您的需求。我在下面稍微修改了它们以得到一个表示所有Sheet1的范围:

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