2014-02-20 4 views
0

На данный момент это функция, которую я использую, но у меня нет способа проверить, будет ли она работать в электронной таблице, пока я не опубликую приложение.Как вы можете получить диапазон выделенных пользователем ячеек в Google Таблицах с помощью Google Apps Script?

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

Для смежных ячеек выбранный ваш код возвращает значения выбора в качестве массива, для несмежных ячеек ваш код будет возвращать массив с единственным значением выбранного элемента LAST.

Я предлагаю что это ошибка при внедрении новой электронной таблицы. Если это важно для вас, я предлагаю вам поднять вопрос. Для старых таблиц вы можете выбирать только смежные ячейки (например, 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 ; 
    } 

отметить, что выбранные диапазоны могут перекрываться, поэтому некоторое содержимое ячейки может быть в два раза добавлено.

Смежные вопросы