0

ループ内での関数の呼び出しに関する多くの情報を見つけましたが、GoogleAppsScriptを扱っているものは何も見つかりませんでした。私はいくつかのチュートリアルを経験し、これに基づいてコードを作成しました: http: //tobyho.com/2011/11/02/callbacks-in-loops/

私の実際のスクリプトは、Fusion Tableからデータを取得し、それをGoogleドキュメントに配置します。Fusion Tableの数値データの一部を実際の名前に置き換えようとしていますが、それを機能させるには、ループ内で実行する関数が必要です。これは私に同じ問題を与えている単純化されたシナリオです。

    var big = [];
    var data = [["fname1", "lname1", 2, 1980],["fname2", "lname2", 3, 1989]];

    function loop() {
      for(i in data) {
        Logger.log(big[i] = changeData(data[i][2]));
    }
    }

    function changeData(n) {
      return function() {
        Logger.log(n + "this worked");
      };
    }

ログを確認すると、これが2回取得されます。function(){Logger.log(n + "これは機能しました");}

関数を実行するのではなく、テキストを返すだけです。私はjavascriptとGoogleAppsスクリプトに本当に慣れていません。これはGASの問題ですか、それとも私のコードはかなり離れていますか?どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

1

使用しているchangeData関数は、関数を宣言して新しい関数を返します。

changeData関数の結果を返す必要があります

function changeData(n) {      
    Logger.log(n + "this worked"); 
    return "changed data result";
}
于 2013-03-10T23:57:47.593 に答える