質問: cell.getValue() MailApp.sendEmail(mailto, subject, content); // メール送信 } } ``` 【エラー内容】 「無効なメール: メールアドレス(行 46、ファイル「コード」)」 #行46は、『MailApp.sendEmail(mailto, subject, content); // メール送信』 検索した内容や過去作成したコードを利用し作成しております為、 初歩的なミス等が多い場合は、合わせてお教えいただけますとたすかります。 よろしくお願いします。
回答: 使い回しではあるんですが、仕様ちがうんで回答をかえます。 * 使い方 1. 【フォーム投稿受付前】下記をフォームが到着するスプレッドシートにスクリプトとして書き、シート名をリストおよびチーム番号にします 2. 【フォーム投稿受付前】チーム番号シートのA1セルに`=buildTeams()`と入れます。少しまつと、205行目まで番号が埋まります(17*12は204なんで200を越えるのはしかたないです。11人席をつくれば人数をあわせることは可能) 3. 【フォーム投稿受付前】↑で作ったシャッフル済みの番号に偏りがないかをみます。偏りがある場合はA1セルを消し、再度書きかえます。また偏りがなくOKだと思えば、コピーして値のみはりつけをします(←A1をさわらなければ変わらないはずですが、万一リストが書きかわると問題なので念の為) 4. 【フォーム投稿受付前】onSubmitをトリガー設定します(フォーム送信時) 5. フォームを公開し、投稿を受け付けます ※下記に【2】氏名、とありますが、これは正確にフォームの名称と対応している必要があります。たとえば2が全角2であるなら、エラーにならないよう事前に修正してください。 仕様としてチーム番号シートを見ればあらかじめ、何番目に投稿すれば何番のチームになるかは分かります。しかし狙って何番目の投稿者になるかは予測できないであろうこと、このシートは閲覧させないであろうことから許容できる仕様だと思っております。また、ランダムとシャッフルの意味の違いを考えればこれはやむないことです。偏りのないシャッフルを考えると全体について母数が多い状態つまり事前にシャッフルをする、がベストです。 ``` function buildTeams() { const teamNums = [ ["1",12], // ["チームナンバー", 0], //記号は意味がある、0のところには、同じチームに何人属すか ["2",12], ["3",12], ["4",12], ["5",12], ["6",12], ["7",12], ["8",12], ["9",12], ["10",12], ["11",12], ["12",12], ["13",12], ["14",12], ["15",12], ["16",12], ["17",12], ]; var ret = []; for(var i = 0; i < teamNums.length; i++) { for(var j = teamNums[i][1]; j; j--) { ret.push([teamNums[i][0]]); } } for(var i = ret.length - 1; i > 0; i--){ var r = Math.floor(Math.random() * (i + 1)); var tmp = ret[i]; ret[i] = ret[r]; ret[r] = tmp; } return [["チーム番号"]].concat(ret); } function onSubmit(e) { const inputs = e.namedValues; const rowNum = e.range.rowStart; const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const teamNum = spreadsheet.getSheetByName("チーム番号").getRange(rowNum, 1, 1, 1).getValue(); spreadsheet.getSheetByName("リスト").getRange(rowNum,5,1,1).setValue(teamNum); MailApp.sendEmail(inputs["メールアドレス"], buildSubject(inputs["【2】氏名"]), buildBody(inputs["【2】氏名"],teamNum)); } function buildSubject(name) { return name + "座席のお知らせ"; } function buildBody(name, seat) { return name + " さん\n\n" + "***\n\nフォーム投稿、ありがとうございます。\nテーブル番号を、お知らせします。\n\n◆テーブル番号\n" + seat + "\n*** \n\n\n短い時間ではありますが、一緒に楽しみましょう!\n\n"; } ```