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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

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

Q&A

解決済

1回答

1013閲覧

GASにてV8適用後のGetRangeについて

TopingMado

総合スコア25

Google Apps Script

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

0グッド

0クリップ

投稿2020/04/03 15:40

発生している問題・エラーメッセージ

GASにてV8適用後、getRangeの範囲指定で変数などを使うことができなくなるのでしょうか。
以下のコートではV8適用前は普通に使えたのですが、v8適用後にエラーが出るようになりました。

エラーメッセージ Exception: パラメータ(String,number,number,number)が SpreadsheetApp.Spreadsheet.getRange のメソッドのシグネチャと一致しません。

該当のソースコード

GAS(V8)

1const test=()=>{ 2for( var i = 1; i <10; i++ ){ 3SpreadsheetApp.getActive().getRange(i,1,1,1).setValue("test"); 4} 5}

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

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

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

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

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

guest

回答1

0

ベストアンサー

結論として使えます

そのコードでそのエラーになるようには見えません。なぜなら i が number だから。

また Spreadsheet.getActive() は Spreadsheet を取得し、そのエラーにあるように Spreahsheet.getRange は文字列しか取りません。

本当にやりたかったことは sheet.getRange だと思うのですが、その場合は Spreadsheet.getActivesheet() をする必要があります。

もしいままでこのコードでうごいていたのだとしたらそれは仕様にあわない動作をバグか、互換性を維持するなどの移行措置で動いていたにすぎないので、仕様にあわせて修正したほうがいいと思います。

投稿2020/04/04 12:44

papinianus

総合スコア12705

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

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

ShortArrow

2020/09/24 09:08

助かりました!ありがとうございます。 v8適用してもしなくてもマクロ記録では var sheet = Spreadsheet.getActive() と記録される。 しかし、v8適用後には .getActive()で返されるオブジェクトに.getRange(int,int,int,int)が無いため、 (str,int,int,int) と認識されているよ!みたいなエラーが出る。 var sheet = Spreadsheet.getActivesheet()すると、 sheetに代入されるオブジェクトは.getRange(int,int,int,int) を含むため、 希望の動作を実現できる。 ってことですね。 まだ開発中なのかもですが、マクロ記録機能に改善の余地がありますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問