我為我們的教練創建了一個電子表格。他們選擇一項運動,然后在電子表格中填寫一份可能的學生名單。他們單擊參加活動的學生姓名旁邊的復選框,輸入日期,然后單擊發送按鈕。它會向列出的教師發送一封電子郵件(第二個選項卡包含所有名冊和電子郵件)。我寫的腳本沒有問題。我遇到的問題涉及格式化。名稱水平列印出來,用逗號分隔每個名稱:
學生一、學生二(等)
[這是在原始帖子中,但我想出了如何跳過陣列中的空白點 如果跳過名冊中的學生,列印輸出如下所示:
學生一、、學生三、學生四、、學生六(等)]
如果未選中復選框,我不希望列印名稱,但我希望列印輸出在電子郵件中看起來更清晰。我使用一個陣列來讀取名稱,我意識到它只是列印出陣列并且它有一個空框。(解決了空名稱部分)我希望電子郵件看起來像:
學生一
學生二
我不確定如何做到這一點并且已經搜索了很多。我所擁有的是功能性的,但看起來不太好。另一個回圈可以做到這一點,但我不知道如何在格式化電子郵件的同時做到這一點。當我嘗試在其中放置一個回圈時,它絕對不喜歡。
這是電子表格:示例體育電子郵件電子表格
這是我輸入的代碼:
function emailRoster()
{
var teacher = SpreadsheetApp.getActive().getRange("Rosters!J2:J4").getValues();
var roster = SpreadsheetApp.getActive().getRange("Sheet1!A6:B").getValues();
var sport = SpreadsheetApp.getActive().getRangeByName("Sport").getValue();
var date = SpreadsheetApp.getActive().getRangeByName("Date").getValue();
var lenT = teacher.length;
var lenR = roster.length;
var playerTrue = [];
for(var i=0; i<lenR; i ){
if(roster[i][1])
playerTrue[i] = roster[i][0];
}
playerTrue = playerTrue.filter(String); //recently added...fixed the printout so it ignores blank parts of the array
playerTrue.forEach(function(name) {
Logger.log(name);
});
for(var p=0; p<lenT-1; p ){
var email = teacher[p];
var subject = "Students out for " sport;
var body = "Teachers,\nThe following students will be out for " sport " on " date ": \n\n" playerTrue "\n";
GmailApp.sendEmail(email,subject,body);
}
};
編輯
我創建了另一個函式來嘗試讓它回傳每個名稱,并在每個名稱后回傳一個回傳值,但我只能讓它做第一個名字:
function createRoster(){
var roster = SpreadsheetApp.getActive().getRange("Sheet1!A6:B").getValues();
var playerTrue = [];
var lenR=roster.length;
for(var i=0; i<lenR; i ){
if(roster[i][1])
playerTrue[i] = roster[i][0]; }
playerTrue = playerTrue.filter(String);
Logger.log(playerTrue);
for(var b=0; b<lenR-1; b ){
return playerTrue[b] "\n";
}
Logger.log(playerTrue);
};
所以現在原始函式中的 body 變數如下所示:
var body = "Teachers,\nThe following students will be out for " sport " on " date ": \n\n" createRoster() "\n";
uj5u.com熱心網友回復:
從您的顯示腳本來看,這似乎playerTrue是一個陣列。當陣列直接作為文本體時,就會出現這樣的情況。當您想將值與垂直方向對齊時,如何使用以下修改join?
從:
var body = "Teachers,\nThe following students will be out for " sport " on " date ": \n\n" playerTrue "\n";
到:
var body = "Teachers,\nThe following students will be out for " sport " on " date ": \n\n" playerTrue.join("\n") "\n";
或者,當您想每 2 行放置一次值時,如何進行以下修改?
var body = "Teachers,\nThe following students will be out for " sport " on " date ": \n\n" playerTrue.join("\n\n") "\n";
參考:
- 加入()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/461066.html
