【发布时间】:2015-04-13 15:42:50
【问题描述】:
我正在尝试根据搜索条件将行设置为范围。我知道我要搜索哪一列,并基于此我希望该特定行成为数据范围。设置数据范围后,我将其格式化为表格并发送包含表格的电子邮件。我所做的所有不同尝试都把我的代码弄得一团糟,所以我没有任何东西可以发布。下面只是我正在搜索的行和列 N 的示例。然后我想要以 D - Y 作为我的范围的那一行。因此,搜索第 89 行的 MLS/MRL Weekend 并将范围 D89:Y89 设置为基于搜索的范围。这不漂亮..我边走边学,这对我来说是一个真正的新领域。
function rowOf(team1, dataRange) {
var ss = SpreadsheetApp.openById("spreadsheetid");
var sheet1 = ss.getSheetByName("Stats1");
var dataRange = sheet1.getSheetValues(1,14,150,1);
var ss1 = SpreadsheetApp.openById("otherspreadsheetid");
var sheet = ss1.getSheetByName("Form Responses 1");
var data = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).getValues();
var email = data[0][2];
var team1 = data[0][1];
var subject = team1 +" Team Stats";
var outRow = null;
for (var i = 0; i < dataRange.length; i++)
{
if (dataRange[i][0] == team1)
{
outRow = i+1;
break;
}
}
var Header = sheet1.getRange('d1:y1').getValues();
var u13gneongoalsg1 = sheet1.getRange(outRow,4).getValues();
var u13gneonshotsg1 = sheet1.getRange(outRow,5).getValues();
var u13gneontopg1 = sheet1.getRange(outRow,6).getValues();
var u13gneontop1g1 = sheet1.getRange(outRow,7).getValues();
var u13gneonfirstg1 = sheet1.getRange(outRow,8).getValues();
var u13gneonpassesg1 = sheet1.getRange(outRow,9).getValues();
var u13gneonpasscompg1 = sheet1.getRange(outRow,10).getValues();
var u13gneonnumpassstringg1 = sheet1.getRange(outRow,11).getValues();
var u13gneonavgpassstringg1 = sheet1.getRange(outRow,12).getValues();
var u13gneonlongpassstringg1 = sheet1.getRange(outRow,13).getValues();
var u13gneonogoalsg1 = sheet1.getRange(outRow,16).getValues();
var u13gneonoshotsg1 = sheet1.getRange(outRow,17).getValues();
var u13gneonotopg1 = sheet1.getRange(outRow,18).getValues();
var u13gneonotop1g1 = sheet1.getRange(outRow,19).getValues();
var u13gneonofirstg1 = sheet1.getRange(outRow,20).getValues();
var u13gneonopassesg1 = sheet1.getRange(outRow,21).getValues();
var u13gneonopasscompg1 = sheet1.getRange(outRow,22).getValues();
var u13gneononumpassstringg1 = sheet1.getRange(outRow,23).getValues();
var u13gneonoavgpassstringg1 = sheet1.getRange(outRow,24).getValues();
var u13gneonolongpassstringg1 = sheet1.getRange(outRow,25).getValues();
//if (game1choice(team)) {
var message = '<HTML><BODY><p>';
message += '<table border="1">';
message += '<tr><td align="center"><b>U13G Neon</b></td><td align="center"><b>Game Totals</b></td><td align="center"><b>'+team1+ '</b></td></tr>';
message += '<tr><td align="center">' +u13gneongoalsg1+ '</td><td align="center"><b>Goals</b></td><td align="center">' +u13gneonogoalsg1+ '</td></tr>';
message += '<tr><td align="center">' +u13gneonshotsg1+ '</td><td align="center"><b>Shots</b></td><td align="center">' +u13gneonoshotsg1+ '</td></tr>';
message += '<tr><td align="center">'+u13gneontopg1 +'</td><td align="center"><b>Time of Possession</b></td><td align="center">'+u13gneonotopg1 +'</td></tr>';
message += '<tr><td align="center">'+u13gneontop1g1 +'</td><td align="center"><b>Time of Possession %</b></td><td align="center">'+u13gneonotop1g1 +'</td></tr>';
message += '<tr><td align="center">'+u13gneonfirstg1 +'</td><td align="center"><b>First Touches</b></td><td align="center">'+u13gneonofirstg1 +'</td></tr>';
message += '<tr><td align="center">'+u13gneonpassesg1 +'</td><td align="center"><b>Passes</b></td><td align="center">'+u13gneonopassesg1 +'</td></tr>';
message += '<tr><td align="center">'+u13gneonpasscompg1 +'</td><td align="center"><b>Pass Completion %</b></td><td align="center">'+u13gneonopasscompg1 +'</td></tr>';
message += '<tr><td align="center">'+u13gneonnumpassstringg1 +'</td><td align="center"><b>Number of Pass Strings</b></td><td align="center">'+u13gneononumpassstringg1 +'</td></tr>';
message += '<tr><td align="center">'+u13gneonavgpassstringg1 +'</td><td align="center"><b>Average Pass String Length</b></td><td align="center">'+u13gneonoavgpassstringg1 +'</td></tr>';
message += '<tr><td align="center">'+u13gneonlongpassstringg1 +'</td><td align="center"><b>Longest Pass String</b></td><td align="center">'+u13gneonolongpassstringg1 +'</td></tr>';
message += '</table>';
message += '</p><p>';
message += '</body></HTML>';
MailApp.sendEmail(email, subject, "", {htmlBody: message});
return outRow;
}
【问题讨论】:
-
发布一些你到目前为止尝试过的代码。
-
哇,这很难阅读。但我看到了这一点。
var u13gneongoalsg1 = sheet1.getRange('d'outRow).getValues();// define your range here ;你是想说D列和A列的行号吗? outRow 有正确的行号?并且您的尝试已经与您在 N 列中寻找的内容相匹配 -
我什至还没有让它工作。首先,我需要删除所有游戏#choice,但我有一个表单可以拉出对手的列并填充下拉列表。当您选择一个对手时,我想在表格中搜索该对手并设置行#,以便我可以使用它来定义目标、射门等的各个变量,然后对其进行格式化并发送电子邮件。我所拥有的是一些没有产生任何效果的试验和错误。
-
抱歉,“N”列是填写在表格中的对手/游戏的列。这就是我要搜索的列。
-
我需要从工作表中获取的所有数据都在一行中,从 D 到 M 列和 P 到 Y 列开始。我无法让第一个工作,所以没有更改任何休息。
标签: javascript google-apps-script google-sheets