2012-05-06 4 views
0

ファイル https://docs.google.com/spreadsheet/ccc?key=0AurtxTJwggIpdG9GaE1TOV9wMEw2UHhjZVJyUXVETUEスクリプトがあなたの何を意味するか、シート<strong>キー</strong>に見つけることができますステップバイステップここで

にONLY働いている:
は、最初の列Bインクルードでは、すべてのシートで検索参照(キー!B1)が立っている場合、この行から始めて、参照(Key!B2)が最初に
を表すC列を検索します。つまり、カップルを探して列内のセルを作成しますCをアクティブセルとして使用

スクリプトがデバッグモードで動作している場合は、シートキーでボタンを使用して、それを実行している 、ブルー、選択すべきセルが

は私が意味
色の機能を使用します(ロガーに記録)が発見された場合でも、それは、良いセル「を選択しないで」作りますまたは赤が選択される細胞であり、時にはそれが選択されていない

コード:

function lookFor() { 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
var referSheet=ss.getSheetByName("Key"); 
    var sheetToCheck = new Array; 
    sheetToCheck[0]=ss.getSheetByName("work"); 
    sheetToCheck[1]=ss.getSheetByName("user"); 
    sheetToCheck[2]=ss.getSheetByName("tax"); 
    sheetToCheck[3]=ss.getSheetByName("cont"); 
    sheetToCheck[4]=ss.getSheetByName("ind"); 

    var referenceB=referSheet.getRange("B1").getValue(); 
    var referenceC=referSheet.getRange("B2").getValue(); 
    //loop to work with all reference as long as there are data in the column A 
for (j in sheetToCheck){ 
    sheetToCheck[j].setActiveCell("A1"); 
    var dataToCheck=new Array; 
    dataToCheck=sheetToCheck[j].getRange(1,2,sheetToCheck[j].getLastRow(),2).getValues(); 
    for (i in dataToCheck){ 
    var done=false; 
     if (dataToCheck[i][0]==referenceB){ 
      for (k=i;k<dataToCheck.length;k++){ 
      if (dataToCheck[k][1]==referenceC){ 
       //this part is user to change the color of the cell, to check if the code is working well 
       if (sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).getBackgroundColor()=="red"){ 
      sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).setBackgroundColor("blue"); 
      } 
      else 
      { 
      sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).setBackgroundColor("red"); 
       } 
      var cell=sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).getA1Notation() ; 
       sheetToCheck[j].setActiveCell(cell); 
       SpreadsheetApp.flush(); 
      done=true; 
      Logger.log("Sheet :"+sheetToCheck[j].getName()+" - Cell :"+cell); 
       break; 
      } 
     } 
      if (done==true){ 
      break; 
      } 
     } 
    } 
} 

} 
enter code here 
+0

私はこの問題を乗り越えるための方法を見つける、私は 'にUtilities.sleep(「500」)を追加;'物語 – Cartman

答えて

0

私はあなたがareadyスクリプトでこれを固定気づい:

var referenceB=referSheet.getRange("B1").getValue(); //A2 
    var referenceC=referSheet.getRange("B2").getValue(); //B2 
ここで

はあなたのコードの短いバージョンです:)

function LookForCity() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var referSheet = ss.getSheetByName("Key").getDataRange().getValues()[1]; 
    var sheetName = ["work", "user", "tax", "cont", "ind"]; 

for (j in sheetName){ 
    var sheet = ss.getSheetByName(sheetName[j]); 
    var values = sheet.getDataRange().getValues(); 
    for(i in values){ 
    if(values[i][1] == referSheet[0] && values[i][2] == referSheet[1]){ 
     Logger.log('Sheet: ' + sheetName[j]+ ' Cell: C'+(parseInt(i)+1)); 
     sheet.setActiveCell(sheet.getRange(parseInt(i)+1, 3)); 
     Utilities.sleep(3000); 
     break; 
    } 
    } 
} 
} 
+0

のコードは非常に素晴らしいです、私が知らなかった何か! – Cartman

関連する問題