Google表格脚本执行者Loureur lors de l'execution

时间:2019-10-03 06:45:18

标签: google-apps-script google-sheets google-apps-script-editor

要处理网站迁移,我有一个包含旧URL和匹配新URL的表,我通过Google表格进行迭代,以与旧URP中存在的字符串进行比较,以生成新URL。

我创建了一个遍历URL的脚本,但是该脚本需要很多时间。

您能帮我优化脚本吗?


从现场迁移到您的网站,然后再从“旧书与新书”的网址中查找,并通过Google表格进行比较,以确保您在新的网站上获得的收益。网址。

“ J'aicrééun petit script qui bouche sur les URL et dans ta de de match mais le scriptprendétemps。

pourriez vous m'aideràoptimiser le script?

function majURL() {
  var app = SpreadsheetApp ;
  var classeur = app.getActiveSpreadsheet() ;

  // Feuille URL à changer
  var fURL = classeur.getSheetByName("URL");
  var numMaxRowURLFinal = fURL.getRange("A1:A").getValues().filter(String).length; //nombre max d'URL
  //suppression ligne de titre

  // Feuille tableau de matching
  var fRedirection = classeur.getSheetByName("redirection");
  var numMaxRowURLRedirection = fRedirection.getRange("A1:A").getValues().filter(String).length; //nombre max du tableau de matching
  var domainURL = fRedirection.getRange(1, 3).getValue(); // ex: http://www.edigroup.ch


  var urlActuelle; //ex: "https://nom.du.site/juniors-9-a-13-ans/doc-abonnement-magazine.html";
  var oldRedirectionSelection; // ex: /juniors-9-a-13-ans
  var newRedirectionSelection; // ex: /jeunesse/juniors.html  
  var isMerged = false;

  for (var listUrlFinal=0; listUrlFinal<numMaxRowURLFinal; listUrlFinal++) {

    urlActuelle = fURL.getRange(listUrlFinal+2, 1).getValue();

    for (var i=0; i<numMaxRowURLRedirection; i++) {
      if(!isMerged){

        oldRedirectionSelection = fRedirection.getRange(i+1, 1).getValue(); // ex: /juniors-9-a-13-ans

        if(urlActuelle.search(oldRedirectionSelection).toFixed(0) > 0 ){

          newRedirectionSelection = fRedirection.getRange(i+1, 2).getValue(); // ex: /jeunesse/juniors.html
          fURL.getRange(listUrlFinal+2, 2).setValue(domainURL+""+newRedirectionSelection); // création de la nouvelle URL
          isMerged = true;
        }
      }
      newRedirectionSelection ="";
    }
    oldRedirectionSelection = "";
    newRedirectionSelection = "";
    isMerged = false;
  }
}

1 个答案:

答案 0 :(得分:0)

您的代码包含许多getValue();的调用

调用外部服务(包括SpreadsheetApp服务)会使您的代码运行缓慢,请参阅Best practices

要优化代码,应使用getValues()一次一次检索整个范围,而不是使用for进行每次getValue()循环迭代。

找到当前行的for后,您可以通过break退出内部oldRedirectionSelection循环来进一步优化代码。

示例:


function majURL() {
  var app = SpreadsheetApp ;
  var classeur = app.getActiveSpreadsheet() ;

// Feuille URL à changer
  var fURL = classeur.getSheetByName("URL");
  var numMaxRowURLFinal = fURL.getRange("A1:A").getValues().filter(String).length; //nombre max d'URL
  //suppression ligne de titre

  // Feuille tableau de matching
  var fRedirection = classeur.getSheetByName("redirection");
  var numMaxRowURLRedirection = fRedirection.getRange("A1:A").getValues().filter(String).length; //nombre max du tableau de matching
  var domainURL = fRedirection.getRange(1, 3).getValue(); // ex: http://www.edigroup.ch

  var urlActuelle; //ex: "https://nom.du.site/juniors-9-a-13-ans/doc-abonnement-magazine.html";
  var oldRedirectionSelection; // ex: /juniors-9-a-13-ans
  var newRedirectionSelection; // ex: /jeunesse/juniors.html  

  var arrUrlActuelle = fURL.getRange(2, 1,numMaxRowURLFinal,1).getValues();
  var arrOldRedirectionSelection = fRedirection.getRange(1, 1,numMaxRowURLRedirection,1).getValues();  

  for (var listUrlFinal=0; listUrlFinal<numMaxRowURLFinal; listUrlFinal++) {
   urlActuelle=arrUrlActuelle[listUrlFinal][0];
    for2:
    for (var i=0; i<numMaxRowURLRedirection; i++) {
      {
        oldRedirectionSelection = arrOldRedirectionSelection[i][0]; // ex: /juniors-9-a-13-ans         
        if(urlActuelle.search(oldRedirectionSelection).toFixed(0) > 0 ){

          newRedirectionSelection = fRedirection.getRange(i+1, 2).getValue(); // ex: /jeunesse/juniors.html
          fURL.getRange(listUrlFinal+2, 2).setValue(domainURL+""+newRedirectionSelection); // création de la nouvelle URL
          break for2;
        }
      }
      newRedirectionSelection ="";
    }
    oldRedirectionSelection = "";
    newRedirectionSelection = "";
  }
}