2017-05-19 3 views
3

名前付き範囲にあるセルに入力された値に基づいていくつかのコードを実行します。セルに入力されたデータが範囲と一致する場合、googleスクリプトを実行します。

私はこれに似た何かをしようとしましたが、それは動作していないようです:文は私が間違ってやっているけど、私はvar in rangevar = rangeを試みた場合、私はそのインクルードを推測している

function onEdit() { 
    var aSheet = SpreadsheetApp.getActiveSheet(); 
    var aCell = aSheet.getActiveCell(); 
    var aColumn = aCell.getColumn(); 
    var aDatarange = aSheet.getRange(aCell.getRow(),aColumn); 
    var aData = aDatarange.getValue(); 
    var SomeRange = aSheet.getRangeByName('RangeName'); 

    if (aData in 'SomeRange') { 
     execute some code 
    } 
} 

どちらもうまくいかないようです。

答えて

2

範囲データからセルの値を検索できるように、範囲外のデータを取得する必要があります。あなたのコードにいくつかの新しい変数を追加し、新しいコード行についてのコメントを追加しました。

function onEdit() { 
    var dataAsString,rangeData; 

    var aSheet = SpreadsheetApp.getActiveSheet(); 
    var aCell = aSheet.getActiveCell(); 
    var aColumn = aCell.getColumn(); 
    var aDatarange = aSheet.getRange(aCell.getRow(),aColumn); 
    var aData = aDatarange.getValue(); 
    var SomeRange = aSheet.getRangeByName('RangeName'); 

    rangeData = SomeRange.getValues();//Get the values out of the range 
    dataAsString= rangeData.toString();//Convert the 2D array to a a comma seperated string of values 

    if (dataAsString.indexOf(aData) !== -1) {//The value of "aData" was found in the data string 
    //execute some code 
    } 
} 
+0

ありがとうございました! –

+0

時間があれば私はフォローアップの質問があります:これは複数のif文で動作しますか?私は2つの異なる文字列でインデックスされているaDataで動作するようになっています。 1つの文字列には1つのものしか含まれていないので、その範囲内に1つしかないので、それはどうにかtoString()コマンドでネジ止めするかどうかわかりません。私はちょうど将来的にもっと追加することを期待して1の範囲としてそれを持っています。入力が一致したときに複数のエントリを持つ文字列のみが機能します。 –

+0

'rangeData'で有効な値をチェックする必要があるかもしれません:' if(!rangeData){return;} '実際には、範囲内の値の場合しかし、あなたの状況が本当に何であるかはわかりません。あなたは別の質問をする必要があるかもしれません。トラブルシューティングに精通していない場合は、次の[トラブルシューティングのためのApps Scriptドキュメントへのリンク](https://developers.google.com/apps-script/troubleshooting) –

関連する問題