2016-09-06 7 views
0

以下のGASコードに問題があります。使用可能なすべてのシートを繰り返し、編集しやすいフォームを作成するために必要なドロップダウンボックス/検証ルールを作成することが目的です。Google Appsスクリプトシートのループ問題

主な問題は、コードがシートごとに1回だけ実行され、アクティブシート以外のシートに適用されないことです。すなわち、次の利用可能なシートには循環しません。

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

あなたはトラブルシューティングツールに精通していない場合、[リンクAppsスクリプトのトラブルシューティングガイド](https://developers.google.com/apps-script/troubleshooting)を読むために5分かかる –

+0

あなたは '使用していますSpreadsheetApp.getActiveSpreadsheet() 'を何度も繰り返し使用していましたが、これは' getActiveSheet() 'ですか? –

答えて

0

あなたはおそらく、あなたの変数sheetSpreadsheetApp.getActiveSheet()を置き換える必要があります。

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

ありがとうございます!あなたは私の欠点を解決し、私はあなたのコードを通して学びます。素晴らしい一日を過ごしてくださいSandy "Too" Good :) – bill

関連する問題