Скрипт не выполняется на протяжении всех итераций и застревает в цикле - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть скрипт, который работает. Он предназначен для l oop через несколько различных электронных таблиц и делает одинаковые правки в каждой. Редактирование: добавление 2 формул, условное форматирование ячейки и снятие защиты с 6 листов. Но, похоже, есть проблема с первым 'FOR' l oop. Это только делает 2 итерации, затем продолжает работать. Мне пришлось принудительно остановить каждую из моих попыток через несколько минут. Я довольно новичок, поэтому я думаю, что проблема может быть связана с моим синтаксисом и скобками {}.

  var sheetIds = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Blueprints");       //Change as needed  -DONE
  var values = sheetIds.getRange('j19:j96').getValues();                                  //Change to proper range -DONE    j3:j96
  var idList = values.map(function (row) {
    return row[0];
  }).filter(function (id) {
    return id;
  });
  for (var i = 0; i < idList.length; i++) {  

   // var form1 = "Roster!A1"
   // var form2 = "KPI!A1"

    var s = SpreadsheetApp.openById(idList[i]);
    var ss = s.getSheetByName('Blueprint');
    var roster = ss.getRange('e3');
    var kpi = ss.getRange('f3');

    var form1 = "Roster!A1"
    var form2 = "KPI!A1"

    roster.setFormula(form1)
    kpi.setFormula(form2)

    //var range = ss.getRange('t1')
    var rule = SpreadsheetApp.newConditionalFormatRule()
      .whenTextContains('Advocates')
      .setFontColor('#c9daf8')
      .setRanges([roster])
      .build();
   var rules = ss.getConditionalFormatRules();
    rules.push(rule);
    ss.setConditionalFormatRules(rules);

  //var s = SpreadsheetApp.getActiveSpreadsheet();
  var store = s.getSheetByName('Store');
  var prot = store.getProtections(SpreadsheetApp.ProtectionType.SHEET)
  for (var i = 0; i < prot.length; i++) {
  var protection = prot[i];
  if (protection.canEdit()) {
    protection.remove();
           }
       }
  var adv1 = s.getSheetByName('Advocate1');
  var prot1 = adv1.getProtections(SpreadsheetApp.ProtectionType.SHEET)
  for (var i = 0; i < prot1.length; i++) {
  var protection1 = prot1[i];
  if (protection1.canEdit()) {
    protection1.remove();
           }
       }
  var adv2 = s.getSheetByName('Advocate2');
  var prot2 = adv2.getProtections(SpreadsheetApp.ProtectionType.SHEET)
  for (var i = 0; i < prot2.length; i++) {
  var protection2 = prot2[i];
  if (protection2.canEdit()) {
    protection2.remove();
          } 
       }
  var adv3 = s.getSheetByName('Advocate3');
  var prot3 = adv3.getProtections(SpreadsheetApp.ProtectionType.SHEET)
  for (var i = 0; i < prot3.length; i++) {
  var protection3 = prot3[i];
  if (protection3.canEdit()) {
    protection3.remove();
           }
      }
  var adv4 = s.getSheetByName('Advocate4');
  var prot4 = adv4.getProtections(SpreadsheetApp.ProtectionType.SHEET)
  for (var i = 0; i < prot4.length; i++) {
  var protection4 = prot4[i];
  if (protection4.canEdit()) {
    protection4.remove();
           }
       }
  var adv5 = s.getSheetByName('Advocate5');
  var prot5 = adv5.getProtections(SpreadsheetApp.ProtectionType.SHEET)
  for (var i = 0; i < prot5.length; i++) {
  var protection5 = prot5[i];
  if (protection5.canEdit()) {
    protection5.remove();  
          }

       }
    }
}

Если бы я мог в этом разобраться, это сэкономило бы много времени !!!

1 Ответ

1 голос
/ 04 февраля 2020

Попробуйте:

Я только что заменил все внутренние индексы l oop на j

function myFunction() {
  var sheetIds=SpreadsheetApp.getActive.getSheetByName("Blueprints");       
  var values=sheetIds.getRange('j19:j96').getValues();                                  
  var idList=values.map(function (row) {return row[0];}).filter(function (id) {return id;});
  for (var i=0;i<idList.length;i++) {  
    var s=SpreadsheetApp.openById(idList[i]);
    var ss=s.getSheetByName('Blueprint');
    var roster=ss.getRange('e3');
    var kpi=ss.getRange('f3');
    var form1="Roster!A1";
    var form2="KPI!A1";
    roster.setFormula(form1);
    kpi.setFormula(form2);
    var rule=SpreadsheetApp.newConditionalFormatRule().whenTextContains('Advocates').setFontColor('#c9daf8').setRanges([roster]).build();
    var rules=ss.getConditionalFormatRules();
    rules.push(rule);
    ss.setConditionalFormatRules(rules);
    var store=s.getSheetByName('Store');
    var prot=store.getProtections(SpreadsheetApp.ProtectionType.SHEET)
    for(var j=0;j<prot.length; j++) {
      var protection=prot[j];
      if (protection.canEdit()) {
        protection.remove();
      }
    }
    var adv1=s.getSheetByName('Advocate1');
    var prot1=adv1.getProtections(SpreadsheetApp.ProtectionType.SHEET)
    for (var j=0; j < prot1.length; j++) {
      var protection1=prot1[j];
      if (protection1.canEdit()) {
        protection1.remove();
      }
    }
    var adv2=s.getSheetByName('Advocate2');
    var prot2=adv2.getProtections(SpreadsheetApp.ProtectionType.SHEET)
    for (var j=0; j < prot2.length; j++) {
      var protection2=prot2[j];
      if (protection2.canEdit()) {
        protection2.remove();
      } 
    }
    var adv3=s.getSheetByName('Advocate3');
    var prot3=adv3.getProtections(SpreadsheetApp.ProtectionType.SHEET)
    for (var j=0; j < prot3.length; j++) {
      var protection3=prot3[j];
      if (protection3.canEdit()) {
        protection3.remove();
      }
    }
    var adv4=s.getSheetByName('Advocate4');
    var prot4=adv4.getProtections(SpreadsheetApp.ProtectionType.SHEET)
    for (var j=0; j < prot4.length; j++) {
      var protection4=prot4[j];
      if (protection4.canEdit()) {
        protection4.remove();
      }
    }
    var adv5=s.getSheetByName('Advocate5');
    var prot5=adv5.getProtections(SpreadsheetApp.ProtectionType.SHEET)
    for (var j=0; j < prot5.length; j++) {
      var protection5=prot5[j];
      if (protection5.canEdit()) {
        protection5.remove();  
      }

    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...