2016-10-01 8 views
-1

この問題は、既に何度か尋ねられます。しかし、私はこの問題を解決することはできませんGoogleのアプリケーションスクリプトのアプリケーションでは。機能1である機能から別の機能に値を送信する

function two() 
{ 
    var bridgeclubs = SpreadsheetApp.openById("1dfyI1jbz..........TVg4OoixKTz1"); 
    var bridgeclubs_sheet = bridgeclubs.getSheetByName("Sheet1"); 
    var data_bridgeclubs = bridgeclubs_sheet.getDataRange().getValues(); 
    var numRows = bridgeclubs_sheet.getDataRange().getNumRows(); 
    var sprshtname = SpreadsheetApp.getActiveSpreadsheet().getName(); 
    for (var i=1; i<=numRows; i++) 
    { 
    if (sprshtname == data_bridgeclubs[i][6]) 
    { 
     var A = i;   
     break; 
    } 
    } 
} 

私は、この値A必要がある2つの関数の呼び出し、実行します。私を助けることができる

function one() 
{ 
two(); 
//here I need this value A; 
var C= 35 * A;for instance 
} 

を?

+1

返品できませんか? 非同期関数を実行していない場合は、 'one.A'を設定することができます – Artyer

答えて

3

return i;を使用して値を返すことができ、oneの中でvar A = two();で値を取得できます。

function two() { 
    var bridgeclubs = SpreadsheetApp.openById("1dfyI1jbz..........TVg4OoixKTz1"); 
    var bridgeclubs_sheet = bridgeclubs.getSheetByName("Sheet1"); 
    var data_bridgeclubs = bridgeclubs_sheet.getDataRange().getValues(); 
    var numRows = bridgeclubs_sheet.getDataRange().getNumRows(); 
    var sprshtname = SpreadsheetApp.getActiveSpreadsheet().getName(); 
    for (var i=1; i<=numRows; i++) { 
     if (sprshtname == data_bridgeclubs[i][6]) { 
      return i; 
     } 
    } 
} 

function one() { 
    var C; 
    var A = two(); 
    if (A) { 
     C = 35 * A; 
    } 
} 
+1

' A'を返す代わりに 'A'とブレークを設定するのはなぜですか? –

+0

@トラーザブロ良い点。 – guest271314

+0

たくさんのtorazburoありがとう、戻り値の意味を知らなかった(私はちょうどスターターで、すでに67歳です...)。あなたのソリューションは機能します!もう一度。 – user3887038

0

グローバル変数を使用できます。

var A; 

function two() { 
    var bridgeclubs = SpreadsheetApp.openById("1dfyI1jbz..........TVg4OoixKTz1"); 
    var bridgeclubs_sheet = bridgeclubs.getSheetByName("Sheet1"); 
    var data_bridgeclubs = bridgeclubs_sheet.getDataRange().getValues(); 
    var numRows = bridgeclubs_sheet.getDataRange().getNumRows(); 
    var sprshtname = SpreadsheetApp.getActiveSpreadsheet().getName(); 
    for (var i=1; i<=numRows; i++) { 
     if (sprshtname == data_bridgeclubs[i][6]) { 
      A = i;   
      break; 
     } 
    } 
} 

function one() { 
    two(); 
    var C= 35 * A; 
} 
+0

実際、これは**最良のアプローチではありません。それは関数の戻り値のためのものです! –

+0

残念ながら、このソリューションはGoogleスクリプト環境では機能しません。関数から別の値を宣言することはできません。 – user3887038

+0

@ torazaburoあなたは正しいですが、1つではなく、より多くの解決策を知ることは良いことです。次に、それらを比較して、最良のものを選択することができます。 – PsychoX

関連する問題