Skip to content

Instantly share code, notes, and snippets.

@tamanobi
Created April 25, 2021 12:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tamanobi/659a6572758704ff8197469ad3bcb201 to your computer and use it in GitHub Desktop.
Save tamanobi/659a6572758704ff8197469ad3bcb201 to your computer and use it in GitHub Desktop.
function getHeaders(sheet) {
var last_col = sheet.getLastColumn();
var range = sheet.getRange(1, 1, 1, last_col);
var headers = range.getValues();
return headers[0];
}
function getColumnNumByHeader(sheet, header) {
var n = getHeaders(sheet).indexOf(header);
if (n < 0) {
throw Error("ヘッダーが見つからなかった");
}
return n + 1;
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(min + (max - min) * Math.random());
}
function generateCode() {
var CHARSET = "34679abcdefghijkmnpqrstuvwxyzACEFGHJKMLNPRTUVWXY";
var code = "";
for(var i = 0; i < 6; i++) {
code +=CHARSET[getRandomInt(0, CHARSET.length)];
}
return code;
}
function getProps(value, key) {
return value[key][0];
}
function keyValue(key, value) {
return "【" + key + "】\n" + value + "\n";
}
function onFormSubmit(e) {
console.log(Object.keys(e.namedValues));
var namedValues = e.namedValues;
var keys = Object.keys(namedValues);
var name = namedValues['お名前(本名フルネーム)'][0];
var email = namedValues['メールアドレス'][0];
var code = generateCode();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var answer = [];
getHeaders(sheet).forEach(function(v, i) {
if(keys.indexOf(v) >= 0) {
answer.push({key: v, value: getProps(namedValues, v)});
}
});
answer.push({key: "あなたの紹介コード", value: code});
console.log(answer);
var answerWithoutEmpty = answer.filter(function(v) {return v.value !== ""});
console.log(answerWithoutEmpty);
var confirm = answerWithoutEmpty.map(function(v) {return keyValue(v.key, v.value)});
var dataRange = sheet.getDataRange();
var lastRow = dataRange.getLastRow();
var codeColumn = dataRange.getCell(lastRow, getColumnNumByHeader(sheet, "発行された紹介コード"));
codeColumn.setValue(code);
var mailSetting = spreadsheet.getSheetByName("メール設定");
var subject = mailSetting.getRange("B1").getValue();
var greeting = mailSetting.getRange("B2").getValue();
var mailSettingData = mailSetting.getDataRange();
var body = greeting + '\n' + confirm.join("\n");
MailApp.sendEmail({
to: email,
subject: subject,
body: body
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment