GoogleAppsScriptの『getActivecell()』について質問です。
昨日まで正常に動作していましたが、今日は正常に動作せず、大変困っています。
GASに何か不具合等が発生しているのでしょうか?
現在、以下の様な状態になっています。
- 昨日は動作していたgetActivecell()を含めたコードが動かなくなった。
- 検証用に新規でテストのスプレッドシートとテストスクリプトファイルを作成し、
getActivecell()だけを使用したスクリプトをテストしたが動かなかった。
- getActivecell()を使用している、過去に作成したスクリプトも動かなくなっていた。
- web上にあるサンプルも動作させてみましたが、同様に動作しませんでした。
GoogleAppsScript
1//テスト 2function GetActiveCell() { 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); 4 var sheet = ss.getActiveSheet(); 5 6 var range = sheet.getActiveCell(); 7 var row = range.getRow(); 8 Logger.log(row); 9}
正確には、動かないというより「挙動が変」という感じです。
- getActiveCell().getRow();はセルのrow座標を取得できる。(※)
- getActiveCell().getColumn();では、セルがどの座標にいても必ず1になる。
- getActiveCell();だけの場合は、実際にアクティブになっているセル座標に関係なく(1, 1)が返される
という「動いてはいるが原点を取得している」という感じです。(勿論アクティブなセルはA1にはありません)
(※)この文章を書いている間に、getRow()も取得される値が「1」になり、取得できなくなりました。
どうすれば良いでしょうか?
私は再現せず、正常に取得できました。
どうやって実行してます?シートの変更時のトリガーでコメントを編集してたりしませんか?
アドバイスありがとう御座います。
トリガー等は一切設定していません。又、ライブラリなども使用していません。
新規スプレッドシートを作成し、そのメニューから「ツール > スクリプトエディタ」でスクリプトエディタを起動。
上記のコードをコピペで実行しましたが、やはりアクティブセルが何処にあってもgetActiveSheet();を使用すると、スプレッドシートのA1(1, 1)を見に行きます。
シートもスクリプトも新規で作成し、テストのスクリプは1つだけですので、同名関数などで間違える要素はない無いと思われます。
試しに、getRange(2, 4).getValue();などで座標を指定すると、そのセルの値を取得してくれますので、
やはりgetActiveCell();に問題がある気がします。
念の為環境は以下になります
windows7 64bit
Chromeバージョン: 74.0.3729.169
情報ありがとうございます。ここは閉じられるので本文に追記なさったほうが多くの人の目に触れます。
また、macaron_xxx様より後に試して同じということはgasに障害があったわけでもなさそうですね。私も検証してみます
残念ながら当方でも再現させることができませんでした。
思いついた可能性として、何らかの要因で意図せずシート側で範囲選択状態になっているのではないかな、ということを考えました。
ドキュメントにもあるようにgetColumn(), getRow()は範囲の開始列、開始行を取得します。
確認のためにgetLastColumn(), getLastRow()を試してはいただけませんでしょうか
もちろん質問者様は特定のセルの話をしているのであって、範囲選択をする意図がないことは理解しています。ただ、Rangeは1セルでも範囲セルでも同じオブジェクトですので、何らかの問題で複数範囲状態であってもgetColumn()だけでは気付けないので、その切り分けのためも含めての確認依頼とご理解いただければと思います。
ドキュメント
https://developers.google.com/apps-script/reference/spreadsheet/range#getColumn()

回答2件
あなたの回答
tips
プレビュー