2016-09-06 4 views
0

Ich habe Probleme mit dem GAS-Code unten. Der Zweck besteht darin, alle verfügbaren Blätter zu durchlaufen und die Dropdown-Boxen/Validierungsregeln zu erstellen, die ich für ein einfach zu bearbeitendes Formular benötigen würde.Google Apps Script Sheet Looping Problem

Das Hauptproblem ist, dass der Code nur einmal pro Blatt ausgeführt wird und sich nie auf ein anderes Blatt außer dem aktiven Blatt bezieht; dh. Es wird nicht zum nächsten verfügbaren Blatt gewechselt.

function FailureSauce() { 
    var ss = SpreadsheetApp.getActive(); 
    for(var n in ss.getSheets()) { // loop over all tabs in the spreadsheet 
    var sheet = ss.getSheets()[n]; // look at every sheet in spreadsheet 
    var option = new Array(); 
    option[0]="☐"; 
    option[1]="☑"; 
    //var dv = sheet.getRange(myRange.getRow(),myRange.getColumn()+1).getValidation(); 
    var dv = SpreadsheetApp.getActiveSheet().getRange(SpreadsheetApp.getActiveRange().getRow(),SpreadsheetApp.getActiveRange().getColumn()).getDataValidation(); 
    var dv = SpreadsheetApp.newDataValidation(); 
    //dv.setAllowInvalidData(false); 
    dv.setAllowInvalid(false); 
    dv.setHelpText("Please choose of the options given in the drop down box"); 
    dv.requireValueInList(option, true); 

     for (var i = 9; i <= SpreadsheetApp.getActiveSpreadsheet().getLastRow(); i++) { 
     for (var y = 1; y < 4; y++) { 
      SpreadsheetApp.getActiveSheet().getRange(i,y).setFontFamily("Arial") 
      SpreadsheetApp.getActiveSheet().getRange(i,y).setFontSize(10) 

      if (SpreadsheetApp.getActiveSheet().getRange(i,y).isBlank()) { 
      //SpreadsheetApp.getActiveSheet().getRange(i,y).setValue('=if(A2=1,image("http://i.stack.imgur.com/GChKZ.jpg"),image("http://i.stack.imgur.com/yQalm.jpg"))'); 
      //sheet.getRange(SpreadsheetApp.getActiveSheet().getRow(),SpreadsheetApp.getActiveSheet().getColumn()).setDataValidation(dv.build()); 
      SpreadsheetApp.getActiveSheet().getRange(i,y).setDataValidation(dv.build()); 
      } 
      if (SpreadsheetApp.getActiveSheet().getRange(i,y).getValues() == "a") { 
      //SpreadsheetApp.getActiveSheet().getRange(i,y).setValue('=image("http://i.stack.imgur.com/GChKZ.jpg")'); 
      SpreadsheetApp.getActiveSheet().getRange(i,y).setDataValidation(dv.build()); 
      SpreadsheetApp.getActiveSheet().getRange(i,y).setValue("☑") 
      } 
     } 
     } 
    } 
    } 
+1

Wenn Sie mit Tools zur Fehlerbehebung nicht vertraut sind, nehmen Sie sich 5 Minuten, um die [Link-Apps Script Anleitung zur Fehlerbehebung] lesen (https://developers.google.com/apps-script/troubleshooting) –

+0

Sie verwenden ' SpreadsheetApp.getActiveSpreadsheet() 'über und über, vielleicht was Sie verwenden wollten, ist 'getActiveSheet()'? –

Antwort

0

sollten Sie wahrscheinlich SpreadsheetApp.getActiveSheet() mit variablen sheet ersetzen.

function FailureSauce() { 
    var dv,option,ss,sheet; 

    ss = SpreadsheetApp.getActiveSpreadsheet(); 

    for(var n in ss.getSheets()){// loop over all tabs in the spreadsheet 
    sheet = ss.getSheets()[n];// look at every sheet in spreadsheet 
    Logger.log('name: ' + sheet.getName()); 

    option = new Array(); 
    option[0]="☐"; 
    option[1]="☑"; 

    // var dv = sheet.getRange(myRange.getRow(),myRange.getColumn()+1).getValidation(); 
    dv = sheet.getRange(SpreadsheetApp.getActiveRange().getRow(),SpreadsheetApp.getActiveRange().getColumn()).getDataValidation(); 

    dv = SpreadsheetApp.newDataValidation(); 
    // dv.setAllowInvalidData(false); 
    dv.setAllowInvalid(false); 
    dv.setHelpText("Please choose of the options given in the drop down box"); 
    dv.requireValueInList(option, true); 


    for (var i = 9; i <= SpreadsheetApp.getActiveSpreadsheet().getLastRow(); i++) { 
     for (var y = 1; y < 4; y++) { 
     sheet.getRange(i,y).setFontFamily("Arial") 
     sheet.getRange(i,y).setFontSize(10) 

     if (sheet.getRange(i,y).isBlank()){ 
      // sheet.getRange(i,y).setValue('=if(A2=1,image("http://i.stack.imgur.com/GChKZ.jpg"),image("http://i.stack.imgur.com/yQalm.jpg"))'); 
      // sheet.getRange(sheet.getRow(),sheet.getColumn()).setDataValidation(dv.build()); 
      sheet.getRange(i,y).setDataValidation(dv.build()); 
     } 
     if (sheet.getRange(i,y).getValues() == "a"){ 
      // sheet.getRange(i,y).setValue('=image("http://i.stack.imgur.com/GChKZ.jpg")'); 
      sheet.getRange(i,y).setDataValidation(dv.build()); 
      sheet.getRange(i,y).setValue("☑") 
     } 


     } 
    } 
    } 
} 
+0

Danke! Sie haben meine Mängel gelöst und ich werde durch Ihren Code lernen. Hab einen schönen Tag Sandy "Too" Good :) – bill

Verwandte Themen