Google apps script 获取行数和列数Google电子表格-应用程序脚本
我试图循环用户选择并获取行和列索引,但它总是为列返回相同的第一行索引Google apps script 获取行数和列数Google电子表格-应用程序脚本,google-apps-script,google-sheets,google-sheets-api,Google Apps Script,Google Sheets,Google Sheets Api,我试图循环用户选择并获取行和列索引,但它总是为列返回相同的第一行索引 sheet.getActiveRangeList().getRanges().forEach((val, index, arr) => { val.getValues().forEach((e, index, arr) => { const row = val.getRow(); // always 2 const columns = val.getColumn(); // alwa
sheet.getActiveRangeList().getRanges().forEach((val, index, arr) => {
val.getValues().forEach((e, index, arr) => {
const row = val.getRow(); // always 2
const columns = val.getColumn(); // always 1
});
});
有人知道我做错了什么吗
更新
这会将行值作为数组返回,但行索引始终为1
sheet.getSelection().getActiveRangeList().getRanges().forEach((value, index, arr) => {
console.log(value.getRow()) // always 1
console.log(value.getRowIndex()) // always 1
console.log(value.getValues()) // row values as array
})
更新2
当用户选择行和列的范围时,我希望获得该行中所选行和列的范围
例如:
[{selectedRow: selectedRow, selectedColumns[...columnIndex]}]
-修改点:
- 在下列情况下,您的图像
检索到的数组长度为sheet.getSelection().getActiveRangeList().getRanges()
。因为所选区域为1。因此,1
的forEach((value,index,arr)
仅为index
。我认为这就是您问题的原因0
- 如果要检索行号和列号列表,则需要在循环中检索它们
我也可能有一些情况,用户在选择之间可能有空白列/行。通过电子表格循环,我仍然能够仅获取所选单元格吗?@t97感谢您的回复。从您的回复来看,我认为我建议的脚本适用于多个所选范围。当您测试它时,您得到了什么结果?@t97另外,从你的问题来看,我担心我可能无法正确理解你期望的输出格式。如果你想用你期望的格式检索输出值,你能提供示例输出值吗?通过这一点,我想修改示例脚本。通过选择单个单元格(C2),我得到以下结果:
[{“C2”:[{“行”:2,“column”:3},{“row”:2,“column”:4},{“row”:3,“column”:3,{“row”:3,“column”:4}]}]
@t97谢谢您的回复。给您带来的不便我深表歉意。我忘记了-1
的尾行
和尾列
。我更新了它。请您确认好吗?
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var res = sheet.getActiveRangeList().getRanges().map(range => {
const startRow = range.getRow();
const endRow = startRow + range.getNumRows() - 1;
const startColumn = range.getColumn();
const endColumn = startColumn + range.getNumColumns() - 1;
const temp = []
for (var r = startRow; r <= endRow; r++) {
for (var c = startColumn; c <= endColumn; c++) {
temp.push({row: r, column: c});
}
}
return {[range.getA1Notation()]: temp};
});
console.log(JSON.stringify(res))
}
[
{"A1:C5": [
{"row":1,"column":1},
{"row":1,"column":2},
{"row":1,"column":3},
,
,
,
]
}
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var res = sheet.getActiveRangeList().getRanges().flatMap(range => {
const startRow = range.getRow();
const endRow = startRow + range.getNumRows() - 1;
const startColumn = range.getColumn();
const endColumn = startColumn + range.getNumColumns() - 1;
const temp = []
for (var c = startColumn; c <= endColumn; c++) {
const tempObj = {selectedColumn: c, selectedRows: []};
for (var r = startRow; r <= endRow; r++) {
tempObj.selectedRows.push(r);
}
temp.push(tempObj);
}
return temp;
});
console.log(JSON.stringify(res))
}
[
{"selectedColumn":1,"selectedRows":[1,2,3,4,5]},
{"selectedColumn":3,"selectedRows":[2,3,4,5]}
]