2012-05-06 39 views
0

這裏的文件 https://docs.google.com/spreadsheet/ccc?key=0AurtxTJwggIpdG9GaE1TOV9wMEw2UHhjZVJyUXVETUE腳本在工作ONLY一步一步

你會發現在片重點,指的是什麼做的事:
查找所有工作表,第一列B中(Key!B1)所在的行,然後從這一行開始,在列C中找到引用(Key!B2)代表第一個
換句話說,我們正在尋找這對,並使列中的單元格C as activecell

該腳本正在調試模式下工作,只有
使用鍵盤鍵按鈕運行它,使其「不能選擇」好細胞,即使要選擇小區被發現(在記錄儀記錄)

我使用彩色功能
這意味着,藍色或紅色是要選擇的單元格,有時它不是選擇

代碼:

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