Google Spreasheet脚本:对于每一行,如果其他单元格,则自动填充单元格

时间:2017-06-03 12:31:56

标签: google-apps-script google-sheets

我正在使用Google Spreasheet管理我的银行帐户。我有一个“操作”spr。我复制粘贴我的操作(从下载的帐户提取)。 然后我标记它们:TYPE(“一次性”或“常规”),CATEGORY,SUBCATEGORY。 由于LABEL的操作,我想自动填充尽可能多的单元格。 那将是这样的:

browse rows where TYPE is undefined
   if label is like '%...%'
      then TYPE="..."; CATEGORY="..."; SUBCATEGORY="..."
   if label is like '%...%'
      then TYPE="..."; CATEGORY="..."; SUBCATEGORY="..."
   and so on...

似乎我对单行有“if”条件(但我不知道如何使用“like”运算符),但是我没有成功使用空TYPE行的循环。< / p>

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Opérations');
  if (ss.getRange('E106').getValue() == 'PRLV SEPA AVIVA VIE'){
      ss.getRange('I106').setValue('Récurrent');
      ss.getRange('J106').setValue('Logement');
      ss.getRange('K106').setValue('Log-Assurance prêt');
   }

有人可以帮助我处理我的问题吗? 非常感谢,最诚挚的问候, 纪尧姆

1 个答案:

答案 0 :(得分:0)

我处理了我的脚本,最后得到了一些有用的东西:

        function preRemplissageAuto() {
          var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Opérations');

          for (var i = 2; i < ss.getLastRow(); i++) {
            var type = ss.getRange('I'+i);
            if (type.getValue() == ''){ 
              var libelle = ss.getRange('E'+i).getValue();
              var categ = ss.getRange('J'+i);
              var sscateg = ss.getRange('K'+i);
              var commentaire = ss.getRange('L'+i);
              var log = ss.getRange('M'+i);

              if (ss.getRange('E'+i).getValue() == 'PRLV SEPA SOGESSUR') {type.setValue('Récurrent');categ.setValue('Assurances');sscateg.setValue('A-Habitation');log.setValue('Remplissage auto');      } 
              if (ss.getRange('E'+i).getValue() == 'PRLV SEPA MAIF 79038 NIORT CEDEX') {type.setValue('Récurrent');categ.setValue('Assurances');sscateg.setValue('A-MAIF');log.setValue('Remplissage auto');      } 
              if (ss.getRange('E'+i).getValue() == 'PRLV SEPA MGEN 112') {type.setValue('Récurrent');categ.setValue('Assurances');sscateg.setValue('A-MGEN');log.setValue('Remplissage auto');}      
              //etc, lots of "if"
          }
        }

脚本正在运行。 我现在有大约1000行,但“类型”(对于“if”条件)最多约100行是空白。我第一次运行它时“执行延迟超时”,并在灯泡图标上得到以下建议: (来自法语的粗略翻译; - ))

  

此脚本非常使用Range.getValue方法。   该脚本使用被认为是昂贵的方法。每次通话都会产生很长时间   打电话到远程服务器。这可能会对此产生重大影响   脚本的运行时间。特别是对大数据。如果脚本有   性能问题,我们建议您使用其他方法,例如   Range.getValues()。

有人有建议来优化我的脚本吗? (使用推荐的方法或不使用)

感谢您的帮助,祝您度过愉快的一天!

纪尧姆