9

私は、タスクを完了するためにランタイムの面で最高のスクリプトを見つけようとしています。私は特定の既知の列の値をチェックする必要がある非常に大きなスプレッドシートを持っており、マッチの場合にはその行を返します。理想的には、返された行を含む新しいスプレッドシートが必要です。Googleスプレッドシートの列ごとにスプレッドシートを検索し、行を返す

IDで開かれたスプレッドシートを取得しましたが、シートには&の範囲がありますが、特定の列を検索して行全体を把握する最も効率的な方法は不明です。

ありがとう、

+0

コードは単語よりも大きく語ります。あなたが持っているコードを投稿できますか?あなたが何かを書いている場合は、私たちは最適化 – Srik

+0

おかげで、あなたの質問は私の問題に答えるためにリードすることができます.. :) –

答えて

29

以下のコードを使用して特定の列を検索することができます。コードは自明です。

function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var menuEntries = [ {name: "Search", functionName: "onSearch"} ]; 
    ss.addMenu("Commands", menuEntries);  
} 

function onSearch() 
{ 
    var searchString = "Test11"; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SheetName"); 
    var column =4; //column Index 
    var columnValues = sheet.getRange(2, column, sheet.getLastRow()).getValues(); //1st is header row 
    var searchResult = columnValues.findIndex(searchString); //Row Index - 2 

    if(searchResult != -1) 
    { 
     //searchResult + 2 is row index. 
     SpreadsheetApp.getActiveSpreadsheet().setActiveRange(sheet.getRange(searchResult + 2, 1)) 
    } 
} 

Array.prototype.findIndex = function(search){ 
    if(search == "") return false; 
    for (var i=0; i<this.length; i++) 
    if (this[i] == search) return i; 

    return -1; 
} 
+2

"findIndex"機能を見つけるためにどこに光を当てはめることができますか? 公式文書でこの機能が表示されない – matcheek

+1

findIndexでコードを更新しました。 –

+0

恐縮です。 – matcheek

-1
function onSearch() 
{ 
    var searchString = "SD0023"; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1"); 
    var column =1; //column Index 
    var columnValues = sheet.getRange(2, column, sheet.getLastRow()).getValues(); //1st is header row 
    var searchResult = columnValues.findIndex(searchString); //Row Index - 2 

    if(searchResult != -1) 
    { 
     //searchResult + 2 is row index. 
     SpreadsheetApp.getActiveSpreadsheet().setActiveRange(sheet.getRange(searchResult + 2, 3)).setValue("found here"); 
    } 
} 

Array.prototype.findIndex = function(search){ 
    if(search == "") return false; 
    for (var i=0; i<this.length; i++) 
    if (this[i].toString().indexOf(search) > -1) return i; 

    return -1; 
} 

は、インラインテキストを検索するために答えるためにいくつかの小さな変更を加えました。

0

My lookup script on GitHub

用途:

Lookup_(SheetinfoArray,"Sheet1!A:B",0,[1],"Sheet1!I1","n","y","n");

Lookup_(Sheetinfo,"Sheet1!A:B",0,[1],"return","n","n","y");

Lookup_(SheetinfoArray,"Sheet1!A:B",0,[0,1],"return","n","n","y");

Lookup_(Sheetinfo,"Sheet1!A:B",1,[1,3,0,2],"return","y","n","n");

Lookup_("female","Sheet1!A:G",4,[2],"Database!A1","y","y","y");

Lookup_(Sheetinfo,LocationsArr,4,[0],"return","y","n","y");

Lookup_(/RegEx+/i,LocationsArr,4,[0],"return","y","n","y");

////////////////////////////////// /////////////////////

パラメータ、について説明:

- 「検索キー」 - 複数検索する文字列、配列、あるいは正規表現もすることができますすぐにもの

- "RefSheetRange" - 情報の参照元。ローカルのシート参照と範囲、または変数からのデータの配列になります。

- 「SearchKey_RefMatch_IndexOffSet」 - 「RefSheetRange」データに「Search_Key」を参照している情報の列です。

- 「IndexOffSetForReturn」 - 「Search_Key」の一致が検出されると、「RefSheetRange」から返されるデータの列。

- "SetSheetRange" - 'Search_Key'と一致する 'RefSheetRange'から選択した情報をどこに置くか、または 'return'を使用すると、関数が終了したときに戻ります。変数。

- 「Return_multiResults」 - 「Search_Key」が「NW」であり、データセットの北西に位置するチェーン内のすべてのストアを検索するとします。したがって、最初の一致が見つかったら 'Y'と宣言して、残りのデータを検索し続けます。

- 「AddNote」 - 結果がスプレッドシートに設定されていて、それをメモリに戻さない場合、「SetSheetRange」の最初のセルが何時のメモと一緒に設定されます。

- "Has_NAs" - 'Y'を指定すると、 'Search_Key'のデータが見つからなかった列は '#N/A'になりますが、それ以外の場合は空白のままになります。

関連する問題