[GAS]ソート指定のあるフィルタビューで選択している実際のセルを取得したい
解決したいこと
ソート指定のあるフィルタビューで表示している状態で、ユーザーが選択しているセル(行)に対して処理を行いたいのですが方法が分かりません。
もしご存知の方がいらっしゃいましたら教えてください。
発生している問題
下の図は、元の表とフィルタビューの関係性をわかりやすくするために、
左の表 A:Bを D:Eにコピーしてから、フィルタビューを作成し E列の「値」順にソートしています。
ここで例えば E2を選択した状態で、ActiveCellの値を取得すると、ユーザーの目に見えている「A」ではなく、元の表のこの番地の値「F」が返ってきてしまいます。
これを「A」が返ってくるように、というより実際はこの行に対して処理を行いたいので、2行目に対して行った処理が正しく元の 5行目に反映してくれるか、本当の行番号の 5を取得するかしたいのですが、方法はあるでしょうか?
いまユーザーには「フィルタで絞っても良いけど行の並び替えは絶対にしないで!」と言っています。
該当するソースコード
上の GASは以下の通りです。
function showSelection() {
let mySheet = SpreadsheetApp.getActiveSheet();
let myActiveCell = mySheet.getActiveCell();
let myRow = myActiveCell.getRow();
let myValue = myActiveCell.getValue();
Browser.msgBox("行番号は:" + myRow + "、セルの値は:" + myValue, Browser.Buttons.OK);
}
自分で試したこと
元の表に対してソートしたり、またフィルタビューに選択条件をつけても行番号は変わらないので問題ないのですが、フィルタビューにソート条件を付けてしまうと、どうしても正しい行番号が取れない状況です。
なんらか適したメソッドやプロパティがあるのか探してみても今のところ見つかりません。