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