2014-02-20 81 views
0

目前这是我正在使用的函数,但我没有办法测试它是否可以在电子表格中工作,直到我发布该应用程序。如何使用Google Apps脚本在Google表格中检索一系列用户突出显示的单元格?

function readSelection() { 
    //The commented lines aren't needed if the sheet is open already 
    //var sheetid = "sheet id here"; 
    //var spreadsheet = SpreadsheetApp.openById(sheetid); 
    //SpreadsheetApp.setActiveSpreadsheet(spreadsheet); 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    //sheet.setActiveSelection("B2:B22"); 
    var activerange = sheet.getActiveRange(); 
    var activecells = activerange.getValues(); 

    return activecells; 
}; 

回答

1

我假定你的意思选择

结果取决于细胞是否是连续的还是不(不连续的单元格选择在新的电子表格功能http://googleblog.blogspot.co.nz/2013/12/new-google-sheets-faster-more-powerful.html

对于连续的单元格可以突出显示==选择你的代码将选择的值作为数组返回,对于不连续的单元格,你的代码将返回一个具有最后选定项目的单个值的数组。这是实施新电子表格时的一个错误。如果对你很重要,我建议你提出一个问题。对于旧的电子表格,只能选择连续的单元格(例如B2:B22),以便它能按预期工作。

回答这个问题最简单的方法就是运行你写的代码!您不必发布任何内容,只需在您正在检查 的电子表格的脚本编辑器中运行代码并查看日志。

function readSelection() { 


    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 

    var activerange = sheet.getActiveRange(); 

    var activecells = activerange.getValues(); 
Logger.log(activecells) 
    return 
}; 
0

目前没有办法做到这一点,或者从脚本中获取所选范围。 请求正在处理中,您可以在此处支持该请求:https://code.google.com/p/google-apps-script-issues/issues/detail?id=4056 通过向请求添加明星。

如果/当此功能实现您的代码将如下所示:所以有的单元格的内容可以增加两倍

function readSelection() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 

    var activeranges = sheet.getSelectedRanges(); 
    var activecells = [] ;' 

    for (var ar in activeranges) 
    activecells = activecells.concat(activeranges[ar].getValues()) ; 

    Logger.log(activecells) 
    return ; 
    } 

注意,选择的范围可以重叠。

相关问题