Javascript 返回未定义的Google函数
我有一个自定义谷歌脚本的问题,我正在生成一个基于其他表单的信息表堆。我不明白为什么会发生这种事 在返回正确之前,我已尝试包含日志和值。。但是当它返回时,我得到了未定义的值。 这是关于函数:getTournamentInfo(),从tournamentInfo=getTournamentInfo(matchInfo[0])调用Javascript 返回未定义的Google函数,javascript,Javascript,我有一个自定义谷歌脚本的问题,我正在生成一个基于其他表单的信息表堆。我不明白为什么会发生这种事 在返回正确之前,我已尝试包含日志和值。。但是当它返回时,我得到了未定义的值。 这是关于函数:getTournamentInfo(),从tournamentInfo=getTournamentInfo(matchInfo[0])调用 函数getTournamentInfo(缩写){ var sheet=ss.getSheetByName(“锦标赛”); var tournaments=sheet.get
函数getTournamentInfo(缩写){
var sheet=ss.getSheetByName(“锦标赛”);
var tournaments=sheet.getRange(“B2:B”).getValues().filter(字符串);
log(“获取缩写:+缩写”);
var r=2;
锦标赛。forEach(功能(锦标赛){
如果(锦标赛!=“”)
{
var tInfo=sheet.getRange(“B”+r+”:K“+r).getValues().toString().split(“,”);
if(tInfo[0]==缩写){
console.log(“为:+tInfo[0]返回信息”);
返回锡箔;
}
}
});
}
函数generateSheets(){
var sheet=ss.getSheetByName(“匹配计划”);
var matches=sheet.getRange(“B5:B”).getValues().filter(字符串);
var r=5;
matches.forEach(函数(匹配){
如果(匹配!=“”)
{
var matchInfo=sheet.getRange(“B”+r+”:L“+r).getValues().toString().split(“,”);
if(matchInfo[10]=“true”)//检查是否生成工作表
{
console.log(“Generate=“+matchInfo[10]);
log(“获取比赛信息:+matchInfo”);
var tournamentInfo=“”;
试一试{
tournamentInfo=getTournamentInfo(matchInfo[0]);
}捕获(e){
控制台日志(e);
}
控制台日志(tournamentInfo);
var template=“1v1PlayerTemplate”;//默认模板
如果(tournamentInfo[3]==2){
template=“1v1TeamTemplate”;
}else if(tournamentInfo[3]==3){
template=“XvXTeamTaplte”;
}
var sheetName=matchInfo[0]+“|”+matchInfo[1];
var matchSheet=ss.getSheetByName(模板).copyTo(ss.getSheetByName(模板).getParent()).setName(图纸名称);
}
}
r++;
});
}```
您的getTournamentInfo
函数没有返回您的结果。return语句只会使forEach
中提供的函数短路。这是一种可能的解决方案(未经测试):
请告诉我们您期望发生什么以及实际发生了什么。
function getTournamentInfo(abbreviation) {
var sheet = ss.getSheetByName("Tournaments");
var tournaments = sheet.getRange("B2:B").getValues().filter(String);
console.log("Fetching Abbreviation: " + abbreviation);
var r = 2;
let result; // <----
tournaments.forEach(function (tournament) {
if (tournament != "" && result == undefined) { // <-----
var tInfo = sheet.getRange("B" + r + ":K" + r).getValues().toString().split(",");
if (tInfo[0] == abbreviation) {
console.log("Returning Info for: " + tInfo[0]);
result = tInfo; // <----
}
}
});
return result; // <----
}
function getTournamentInfo(abbreviation) {
var sheet = ss.getSheetByName("Tournaments");
var tournaments = sheet.getRange("B2:B").getValues().filter(String);
console.log("Fetching Abbreviation: " + abbreviation);
var r = 2;
for (const tournament of tournaments) { // <==============
if (tournament != "") {
var tInfo = sheet.getRange("B" + r + ":K" + r).getValues().toString().split(",");
if (tInfo[0] == abbreviation) {
console.log("Returning Info for: " + tInfo[0]);
return tInfo;
}
}
}
}