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++;

      }

    });

  });

}