質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

3回答

2687閲覧

GAS スプレッドシートの選択行を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2020/10/23 06:03

編集2020/10/24 03:38

スプレッドシートを開いて、ツール→スクリプトエディタを開いて、下記のコードを実行しようとしてます。
目的は「開いているスプレッドシートの選択している行の取得」です。

下記のようなコードを書いてみましたが、
スプレッドシートで、選択範囲を1つだけにして、
5行目だけ選択にしても、10行目から100行目を選択してみても、
firstRow,LastRowの結果がどちらも「1」になってしまいます。

GAS

1function test(){ 2 var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 3 4 var activeRange = activeSheet.getActiveRange(); 5 var firstRowFromRange = activeRange.getRow(); 6 var lastRowFromRange = activeRange.getLastRow(); 7 8 9 var activeCell = activeSheet.getActiveCell(); 10 var firstRowFromCell = activeCell.getRow(); 11 var lastRowFromCell = activeCell.getLastRow(); 12 13 //sawaさんの回答から追記 14 var activeRangeList = activeSheet.getActiveRangeList().getRanges(); 15 var firstRowFromRangeList = activeRangeList[0].getRow(); 16 var lastRowFromRangeList = activeRangeList[0].getLastRow(); 17 18 console.log();//breakpoint用 19 20}

変数はブレイクポイントで停止をして確認しています。
イメージ説明

どのようにすれば解決できるでしょうか?
よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

問題は解決していません。

しかし、原因がコードではないことが判明しました

何らかの理由で**「アクティブシートの選択範囲を捉えていない」**状態です
この原因は判明していませんが、質問の内容と変わってきたため、この質問は閉鎖します

投稿2020/10/25 01:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問で提示されたソースで firstRowFromCell は正しく(1つ目の)選択範囲の最初の行番号が取得できるはずです。連続しない複数範囲を選択していて、そのうちひとつが1行目だったりしませんか?

lastRowFromCell が最初の行番号になるのは、activeSheet.getActiveCell() でアクティブなセルを取得しているからでしょう。代わりに activeSheet.getActiveRange() をつかてみてください。

投稿2020/10/23 08:38

draq

総合スコア2573

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/10/23 23:09

回答ありがとうございます。 スプレッドシートの選択範囲を1つだけ、開始行10行目、終了行50行目にしても、すべて「1」になってしまいます。 何かまだ設定などが不足しているのでしょうか?
退会済みユーザー

退会済みユーザー

2020/10/23 23:14

条件が曖昧だったため、質問を修正しました
guest

0

getActiveRangeListを使うとよいです。

参考:https://google-apps-script.net/instructions/?p=1637#getActiveRangeList

GAS

1function test(){ 2 var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 3 4 var activeRange = activeSheet.getActiveRangeList().getRanges(); 5 var firstRowFromRange = activeRange[0].getRow(); 6 var lastRowFromRange = activeRange[0].getLastRow(); 7 8 console.log(firstRowFromRange,lastRowFromRange); 9 10}

追記

私の方でも同じように、質問に書かれているコードを新規作成のスプレッドシートで実行してみましたが、
問題なく 最初の行と最後の行が出力されますね。(getActiveCell以外)

コード以外の他の要因によるものだと思うのですが、このケースは私ではわかりません。
申し訳ないです。

イメージ説明
イメージ説明

投稿2020/10/23 08:20

編集2020/10/24 04:05
sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sawa

2020/10/23 08:56

あ、質問を読み間違えていました。。 draqさんが書かれている通り、そのままのコード(getActiveRangeの方)で取得できるはずです。
退会済みユーザー

退会済みユーザー

2020/10/23 23:10

回答ありがとうございます。 選択範囲は1行目からというわけではなく、一つの選択範囲が10行目から50行目のようにしています。(追記します) 「.getActiveRangeList().getRanges();」を試しましたが、こちらでも開始も終了も「1」になってしまいました。
sawa

2020/10/24 02:26

結果が両方1というのは、どうやって確認されてますか?
退会済みユーザー

退会済みユーザー

2020/10/24 03:37

console.log();//breakpoint用 のところにブレイクポイントを設定して、止まったタイミングで下部にあるヘンスが確認できるところで見ています スクショを質問に追加しておきます
sawa

2020/10/24 04:08

うーん。同じようにやったら、普通にできちゃいました。 原因は質問に記載のコード以外の部分かと思いますが、よくわかりません。申し訳ないです。 新規にスプレッドシート作成して、このコードだけ貼り付けて試してみてください。 くらいしか、アドバイスできませんです。 daraqさん他、別の方の回答をお待ちください。
退会済みユーザー

退会済みユーザー

2020/10/25 01:19

確認いただきありがとうございます。 シートを複製して、コードを書いたところ正しく表示されました。 ということは、現在のシートが何かしらの原因で選択範囲を認識しないということですね。 コード上の問題ではなさそうです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問