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

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

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

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

Q&A

解決済

1回答

2987閲覧

GASで関数の実行終了後に変数が初期化されてしまう

EMMMY

総合スコア17

Google Apps Script

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

0グッド

0クリップ

投稿2017/11/16 16:15

###前提・実現したいこと
GoogleAppsScript(GAS)でスプレッドシートの操作をしています.スクリプトに記述した関数を実行するたびに変数の値が更新されていくようなものを作っています.この時,1度関数を呼び出すと,次に呼び出す時には直前に関数を呼び出した際に更新された変数が初期化されてしまいます.これを,変数の値の変化が保持されるようにしたいです.下記の該当のソースコードは,i_defを呼び出した後,testを複数回呼び出すことを想定しています.実行すると,(2, 2)には0しか入力されません.
関数呼び出し終了直前にシートに値を書き出し,関数を呼び出したときにその値を使うようにすればこの問題は解決されますが,処理速度を可能な限り下げたくないため,APIリクエスト回数ができる限り増えないよう他の解決法が知りたいです.

###該当のソースコード

var sheet = SpreadsheetApp.getActiveSheet(); var i; function i_def(){ i = 0; } function test(){ sheet.getRange(2, 2).setValue(i); i = i + 1; }

###試したこと
varをつけずに宣言した場合,その変数はグローバル変数になるということなので,変数の値の更新が保持されるか試してみましたが,結果は変わりませんでした.

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

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

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

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

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

guest

回答1

0

ベストアンサー

GASにかかわらずスクリプト言語は実行後変数は保持されません。再利用するには、ご自身で書かれている通りシートや何らかのデータストアに保存する必要があります。

投稿2017/11/16 16:17

kei344

総合スコア69407

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

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

EMMMY

2017/11/16 23:50

保持できないんですね……ありがとうございます.
firstlast

2022/03/28 10:05

EXCEL VBAではできるんですけどね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問