我试图找出最有效的方法来确定google工作表中某列的顺序位置,而不是单元格Feed。
因此,例如,我有以下电子表格:
A B C D
+----+-----------------------------------------+
Header Row | 1 | name | address | phone | email |
+----+---------+-----------+---------+---------|
| 2 | Jane | 1001 | 6139023 | w@gmail |
+----+---------+-----------+---------+---------+
| 3 | Jon | 1102 | 4320909 | x@gmail |
+----+---------+-----------+---------+---------+
| 4 | Jeff | 1203 | 4132323 | y@gmail |
+----+---------+-----------+---------+---------+
| 5 | Jenny | 1304 | 3346044 | z@gmail |
+----+---------+-----------+---------+---------+
在我的代码中,我能够通过Google的Sheet API从表格中成功获取基于行的Feed。我为feed中每行返回的对象包括各种属性,其中大部分是标题行中的值。例如,单行对象看起来像:
{
id : 'https://spreadsheets.google.com/...'
, 'app:edited' : '2017-02-24T23:59:56:56.520Z'
, _links : [ self: 'https://...', edit: 'https://...']
, name : 'Jane'
, address : '1001'
, phone : '6139023'
, email : 'w@gmail'
}
我想从基于行的Feed中找到任何给定列的序号位置,但是如何做到这一点并不是显而易见的。似乎对象的属性是根据它们在标题行中的位置排序的,但是我很难找到属性所指的列号。
我想要列号的原因是我希望获得特定列和行的基于单元格的Feed,但看起来Google的API要求您知道列的序号位置。也就是说,您需要知道min-column和max-column,以及基于单元格的feed的min-row和max-row。现在,我知道我可以查看Sheets UI中的列并确定列所在的位置,但是我该如何以编程方式执行此操作?
总之,我试图找到一种程序化的方式来回答一个简单的问题,例如问题:
" phone
列的序号位置是什么?"
Google的排行响应是否可以实现这一点?
答案 0 :(得分:1)
Sheetsv4中还没有这样的功能。您必须手动执行Basic Reading methods并解析响应并循环遍历它。
function findPosition(){
var arrayBuffer;
var myArr;
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/'+myspreadsheetId+'/values/'+"Sheet1!"+A+":"+Z);
xhr.setRequestHeader('Authorization', 'Bearer ' + myAccessToken);
xhr.onload = function (oEvent) {
arrayBuffer = xhr.response; // Note: not oReq.responseText
console.log("arrayBuffer "+ arrayBuffer);
myArr = JSON.parse(arrayBuffer);
for(var i = 0; i < myArr.values.length; i++){
if(myArr.values[0][i] === "phone"){
console.log("column position is " + (i+1)); // +1 because counting starts at 0
}
}
};
xhr.send(null);
}
输出:
可能还有其他方法可以做到这一点。我刚给你看了我的版本。