要处理网站迁移,我有一个包含旧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;
}
}
答案 0 :(得分:0)
您的代码包含许多getValue();
的调用
要优化代码,应使用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 = "";
}
}