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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3712閲覧

Google Apps Scriptでのスコープについて

TakahashiSyou

総合スコア6

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/02/28 01:43

編集2015/02/28 01:55

現在Google Apps ScriptにてログファイルをGoogle Docsに出力するライブラリを作成しています。

logGene();ライブラリはエラーが発生した時に原因の追求ができるように要所毎に設置してログを引数を記録するというものです。
しかし、問題がグローバル変数のfileChecklogIDがうまく動いていないためか呼び出すたびにファイルが作成されるという自体に陥っています。

流れ
①ログファイルの作成←すでに作成済みの場合は作成しない。fileCheckfalseの場合のみ。
②ログファイル作成済みのフラグを立てる
fileCheck=true
③ログファイルに調べたい引数dataを書き込む

ご協力お願い致します。

lang

1コード 2 3 4var fileCheck = '';//ファイルが作成済みの場合:1 5var logID = ''; //ログ出力先ファイルのID 6 7function test(){ 8var data=10; 9logGene(data,true); 10 11data=50; 12logGene(data,true); 13 14data=100; 15logGene(data,false); 16}; 17 18function logGene(data,write){//継続書込モード write=ture 19 Logger.log(data);//取得データログへ書き出し 20 var logData = Logger.getLog(); 21 22 //ログファイル作成日時の取得 23 var objDate =new Date(); 24 var y = objDate.getFullYear(); 25 var M = objDate.getMonth()+1; 26 var d = objDate.getDate(); 27 var h = objDate.getHours(); 28 var m = objDate.getMinutes(); 29 var s = objDate.getSeconds(); 30 var date = y+"/"+M+"/"+d+" "+h+":"+m+":"+s; 31//ログファイルを作成している場合 true 32//ログファイルを作成していない場合 false 33 if (fileCheck !== true){//作成していない場合実行 34 var createFile = DocumentApp.create('log'+'('+date+')');//ファイルの作成 35 var fileCheck = true;//ログファイルを作成済みなので フラグとして true 36 } 37 var logID = createFile.getId();//作成したログファイルのID取得 38 var logFile = DocumentApp.openById(logID); 39 } 40 var bodyText = logFile.getBody().getText;//ログ出力先テキストの取得 41 logFile.getBody().setText(logData);//ログ出力先テキストの最後にテキストを追加 42 Logger.clear(); 43 return; 44 45}

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

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

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

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

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

guest

回答1

0

ベストアンサー

You can not increment Global Variables this way, as every time a handler executes, Global variable is initialized and then manipulated.

google apps script - using and modifying global variables within handler functions - Stack Overflow

普通のサーバサイドスクリプトと同様に永続化するべきなのでは。

投稿2015/02/28 04:54

Lhankor_Mhy

総合スコア36074

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問