AIに添削してもらいました
このほうがフォーマットが変わったとき、修正する箇所が一か所になり、汎用性が増しました
AIにコードを作ってもらったり、自分で作ったコードの添削や説明をしてもらうのがいい使い方ですね
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const threads = GmailApp.search('from:(admin@clinic.mond.jp) after:2025/06/01');
const fields = [
{ key: '名前', column: 1, var: 'name' },
{ key: 'person:', column: 2, var: 'number' },
{ key: 'tel', column: 3, var: 'tel', prefix: "'" },
{ key: '住所', column: 4, var: 'address' },
{ key: 'email', column: 5, var: 'email' },
{ key: '参加者1', column: 6, var: 'a1' },
{ key: '参加者2', column: 7, var: 'a2' },
{ key: '参加者3', column: 8, var: 'a3' },
{ key: '参加者4', column: 9, var: 'a4' }
];
function extractValue(line, key) {
if (line.includes(key)) {
return line.split(':')[1];
}
return null;
}
function writeToSheet(row, data) {
fields.forEach(field => {
if (data[field.var]) {
sh.getRange(row, field.column).setValue(field.prefix ? field.prefix + data[field.var] : data[field.var]);
}
});
}
let row = 2;
threads.forEach(thread => {
thread.getMessages().forEach(message => {
const body = message.getPlainBody();
const lines = body.split(/\r\n|\r|\n/);
let found = 0;
const data = {};
lines.forEach(line => {
fields.forEach(field => {
const value = extractValue(line, field.key);
if (value) {
data[field.var] = value;
found++;
}
});
});
if (found >= 6) {
writeToSheet(row, data);
row++;
}
});
});
}