0

对不起,如果我在我的代码中犯了一个非常基本的错误(是的,我知道这很杂乱/很长,我上个月刚刚开始这个东西)。我的目标是在绑定到脚本的工作表上插入图像。运行时,我的一名实验室技术人员或司机将能够记录或查看案例。有三个可能的工作表。教练,恩里克或交付。当他们选择时,它会询问要查找的号码(即GDL4256或L849)。一旦在“Enrique's”表或“Coach's”表中找到了该号码,它将跳过所需的单元格,以根据按钮状态是YES还是“在实验室”或“途中”没有。 (如第36行所示,其中c可以是“c + 4”或“c + 5”)我的问题是,当我运行脚本时,它似乎从未真正将软插入值与数组中的数据进行比较。我希望我能在这里找到问题,但在调试器中找不到它。有任何想法吗? (是的,我是一个pleb,但我认为我迄今没有问题......)Google Spreadsheet for looper无法正确检查数组?

我已经省略了大约9/10的代码,因为它大部分是重复的,而且我仍然在寻找使其更小的方法,我只需要先了解这个问题。

function Enrique(){ 
    stat = 0; 
    var ui = SpreadsheetApp.getUi(); 
    var response = ui.alert('Case Entry', 'Is this case being logged into the lab?', ui.ButtonSet.YES_NO); //Must answer "Yes". Script will end otherwise. 
    if (response == ui.Button.YES) { 
     //User said yes, logging into the lab 
     var sh = SpreadsheetApp.getActiveSpreadsheet(); 
     var ss = sh.getActiveSheet(); 
     var cell = ss.getActiveCell(); 
     var ui = SpreadsheetApp.getUi(); 
     //Getting case number, not case sensitive 
     var response = ui.prompt('Case Entry', 'What is the case number?', ui.ButtonSet.OK); 
     var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); 
     var sheetNumber = sheets.length; 
     var currentSheet = ss.getIndex();//-1 
     //Make array 
     Logger.log(currentSheet); 
     SpreadsheetApp.setActiveSheet(sheets[currentSheet]); 
     cell = sheets[currentSheet].getRange(1,1); 
     var activeR = cell.getRow()-1; 
     var activeC = cell.getColumn()-1; 
     var data = sheets[currentSheet].getDataRange().getValues(); 
     var step = 0; 
     //loop through data on sheet   
     var r = activeR; 
     var c = activeC; 
     var d = data[0].length; 
     for(;r<d;++r){  
      for(;c<d;++c){   
       step++; 
       Logger.log('sheet : '+currentSheet+' step:'+step+' response.getResponseText() '+response.getResponseText()+' = '+data[r][c]);    
       if(data[r][c]==''||(step==1&&currentSheet==currentSheet)){ continue };                   
       if(response.getResponseText().toString().toLowerCase()==data[r][c].toString().toLowerCase()){    
        sheets[currentSheet].getRange(r+1,c+4).activate().setValue("Yes").setBackgroundRGB(0,255,0);                                            
        Browser.msgBox("The case has been logged into the lab on the sheet 'Enrique'");  
        stat = 1; 
        return                            
       } 
      }                               
     } 
     if(stat === 0) 
     { 
      Browser.msgBox("The code failed somewhere..."); 
     } 
    } 
} 

回答

0

嗯,我已经做了很多环视,因为没有人能够帮助我(谢谢)。 我终于到了我需要在课堂上的部分,以便将我需要的信息更可靠地传递给骑士。这是我使用的代码,因为我知道别人会遇到和我一样的问题。欢迎他们根据需要复制我。

function Search(){ 
    var ui = SpreadsheetApp.getUi(); 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    var response = ui.alert('Case Entry', 'Is this case being logged into the lab?', ui.ButtonSet.YES_NO); 
    if (response == ui.Button.YES) { 
    var response = ui.prompt('Case Entry', 'What is the case number?', ui.ButtonSet.OK); 
    var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); 
//The 0 arguement in the function calls below is just a placeholder. 
//I was originally using it for one bit to be called by "a" in the looper function 
    if(looper(0, response, "Enrique", 5, jumpToEnr(), "The case has been logged in under the sheet ", "#00ff00") == 1){return} 
    if(looper(0, response, "Coach", 5, jumpToCoach(), "The case has been logged in under the sheet ", "#00ff00") == 1){return} 
    if(looper(0, response, "Delivered", 2, jumpToDel(), "The case has been found in the sheet ", "#ffff00") == 1){return} 
    } 
    if (response == ui.Button.NO) { 
    var response = ui.prompt('Case Entry', 'What is the case number?', ui.ButtonSet.OK); 
    var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); 
    if(looper(0, response, "Enrique", 6, jumpToEnr(), "The case has been logged in under the sheet ", "#00ff00") == 1){return} 
    if(looper(0, response, "Coach", 6, jumpToCoach(), "The case has been logged in under the sheet ", "#00ff00") == 1){return} 
    if(looper(0, response, "Delivered", 2, jumpToDel(), "The case has been found in the sheet ", "#ffff00") == 1){return} 
    } 
    Browser.msgBox("sorry, it seems like something went wrong..."); 
} 

function looper(a, b, c, d, e, f, g){ 
    e; 
    var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); 
    for(n=0;n<values.length;++n){ 
    var cell = values[n][1]; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    if(b.getResponseText() == cell){sheet.getRange(n+1,d).activate().setBackground("#00ff00").setValue("Yes"); Browser.msgBox(f+c); return 1;} 
    } 
} 

function DelSearch(){ 
    var response = ui.prompt('Case Search', 'What is the case number?', ui.ButtonSet.OK); 
    looper(0,response, "Delivered", 2, jumptoDel(),"I found the case in the sheet ", "#ffff00"); 
} 

function formSubmit(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    jumpToForm2(); 
    if(ss.getSheetByName("Form Responses 2").getRange(2,5).getValue() == "Enrique"){copyRow("Form Responses 2","Enrique");} 
} 

function jumpToCoach() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Coach'); 
    Logger.log(sheet.getName()); 
    SpreadsheetApp.setActiveSheet(sheet); 
    sheet.getRange('A1').activate(); 
} 
function jumpToEnr() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Enrique'); 
    Logger.log(sheet.getName()); 
    SpreadsheetApp.setActiveSheet(sheet); 
    sheet.getRange('A1').activate(); 
} 

function jumpToDel() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Delivered'); 
    Logger.log(sheet.getName()); 
    SpreadsheetApp.setActiveSheet(sheet); 
    sheet.getRange('A1').activate(); 
}