【发布时间】:2020-07-22 07:39:46
【问题描述】:
我无法从 while 循环中获取更新的结果。 已经花了几天时间阅读文章并试图弄清楚...... 希望你能帮忙:)
我想取一个标题(字符串),如果它的长度小于 78,我想随机添加单词, 使用工作表中的单词列表。 这工作得很好,问题是它一遍又一遍地添加相同的单词。 我搜索了一种删除重复项的方法,并找到了 [...new Set(arr)],并且效果很好。 然而,当我尝试在 while 循环中使用它时(每个循环检查删除重复项),最终结果仍然有重复项。
我正在添加可以帮助您更好地理解它的工作表, 床单 这是代码。
/**
* Adds Brand, adds words to 80 letters.
*
* @Param Title the base title used
* @Param Brand the store brand (Ess,Eag..)
* @customfunction
*/
function AddKeyWords(title, brand) {
title = ChangeTitleWords(title, brand); //previous function.
//title = "Just a few words";
if(title == "Missing Brand" || title == "") {
return "Missing Brand or Title";
} else {
let wordsArr = title.split(" "); //split title to array
let len = title.length;
//If title is more than 80 notes, remove words of it.
while (wordsArr.join(" ").length > 80) {
wordsArr.pop();
}
let Title2 = wordsArr.join(" ");
let Title2Len = Title2.length;
let len2 = 80 - Title2Len;
//if title had less than 78 notes, add a random word
while (len2 > 3) {
let wordsArr1 = title.split(" ");
if (len2 == 3) {
wordsArr.push(random3());
} else if (len2 == 4) {
wordsArr.push(random4());
} else if (len2 >= 5 && len2 < 18) {
wordsArr.push(random5());
} else if (len2 >= 18) {
wordsArr.push(random10());
}
wordsArr = [...new Set(wordsArr)]; // create a new arr without duplicates
len2 = 80 - wordsArr.join(" ").length;
//return title3;
title3 = wordsArr;
}
return title3.join(" ");
}
}
////Random Functions.
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function random3() {
var t = SpreadsheetApp.getActive().getSheetByName('Settings').getRange('L5:L').getValues().filter(String)
return(t[getRandomInt(0, t.length-1)]);
}
function random4() {
var t = SpreadsheetApp.getActive().getSheetByName('Settings').getRange('M5:M').getValues().filter(String)
return(t[getRandomInt(0, t.length-1)]);
}
function random5() {
var t = SpreadsheetApp.getActive().getSheetByName('Settings').getRange('N5:N').getValues().filter(String)
return(t[getRandomInt(0, t.length-1)]);
}
function random10() {
var t = SpreadsheetApp.getActive().getSheetByName('Settings').getRange('O5:O').getValues().filter(String)
return(t[getRandomInt(0, t.length-1)]);
}
【问题讨论】:
标签: javascript arrays google-apps-script google-sheets