これがGoogle Appsスクリプト(またはJavaScript全体)の機能なのか、それともバグなのか疑問に思っています。ループ内から関数を呼び出すと、奇妙な結果が得られます。現在、呼び出された関数内に、呼び出しループで実行されている変数と同じ変数を使用するループがあり、これが問題を引き起こしているようです。ここにコード:
function dudi() {
var folderName='FormsGenerator';
var ss=new Array(2);
for(o=0;o<2;o++){
var str='dudo' + o;
trashFile(str,folderName);
ss[o]=SpreadsheetApp.create(str);
Logger.log(str);
}
}
function trashFile(fileName,folderName){
var folder=DocsList.getFolder(folderName);
var lFolder=folder.getFiles();
for(o=0;o < lFolder.length;o++){
if(lFolder[o].getName() == fileName) {
DocsList.getFileById(lFolder[o].getId()).setTrashed(true);
}
}
何が起こるかというと、呼び出し元の関数のループが最初の繰り返しの後に停止するということです。TrashFile でループ インデックス変数を "p" に変更するか、"o=0" の代わりに "var o=0" を使用すると、問題は解決します。私は何を間違っていますか?これはよく知られた機能ですか、それともバグですか? 私は長い間 C と C++ でプログラミングを行ってきましたが、javascript/GAS についてはまったくの初心者です。
マックス