Googleフォームに投稿すると、ランダムの席(数字)が割り当てられ、割り当てられた席(数字)を、
フォーム投稿者へ自動返信される様な仕組みを作成したいと思っております。
Googleフォームと連動している回答のスプレッドシートは、以下の様に設定しております。
まず、Googleフォームに投稿されると、リストシートのE列にチーム番号シートの中から、
ランダムの数字が割り当てられる様なスクリプトを作成しました。
下記のコードは、リストシートのE2セルへ反映する様な設定になっている為、
投稿された順に、E3,E4,E5・・・へランダムに番号を割り当てたいのですが、
対応方法を教えていただけないでしょうか?
var sheetName1 = "チーム番号"; /* チーム番号シート名 */ var sheetName2 = "リスト"; /* 一覧のシート名 */ var wordsRow = 1; /* 単語が格納されている先頭の行番号 */ var wordsCol = 1; /* 単語が格納されているカラム番号 */ var words = 15; /* チーム番号の数*/ var storeRow = 2; /* リストの行番号 */ var storeCol = 5; /* リストの絡む番号 */ function pickRandomWord() { var ss = SpreadsheetApp.getActiveSpreadsheet(); row = Math.floor(Math.random() * words); Logger.log("row = " + row); var word = ss.getSheetByName(sheetName1).getRange(wordsRow + row, wordsCol).getValue(); Logger.log("word = " + word); ss.getSheetByName(sheetName2).getRange(storeRow, storeCol).setValue(word); }
また、リストシートに割り当てられた番号をB列のアドレスへメールを送付する為に、
以下のコードを作成しましたが、エラーが表示されてしまう為、対処方法をお教えいただけないでしょうか?
メール送信時のスクリプトは、以下となります。
function mail() { var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("リスト"); var dr = ss.getDataRange(); for (var i = 1; i <= ss.getLastRow(); i++){ var cell = ss.getRange(i, 2); var values = dr.getDisplayValues(); var name = values[i-1][5]; var seat = values[i-1][6]; var subject = name + '座席のお知らせ'; var content = name + " さん\n\n"; content += "***\n\n"; content += "フォーム投稿、ありがとうございます。\n"; content += "テーブル番号を、お知らせします。\n\n"; content += "◆テーブル番号\n"; content += seat + "\n"; content += "*** \n\n\n"; content += "短い時間ではありますが、一緒に楽しみましょう!\n\n"; var mailto = cell.getValue() MailApp.sendEmail(mailto, subject, content); // メール送信 } }
【エラー内容】
「無効なメール: メールアドレス(行 46、ファイル「コード」)」
#行46は、『MailApp.sendEmail(mailto, subject, content); // メール送信』
検索した内容や過去作成したコードを利用し作成しております為、
初歩的なミス等が多い場合は、合わせてお教えいただけますとたすかります。
よろしくお願いします。
ランダムとはサイコロを振った状態を指します。サイコロはまれですが6が3回続けて出ることがあります。ほんとうにランダムにしたいのですね?
ご教示いただき、ありがとうございます。チーム分けをしたいので、人数が均等になるように番号を割り振りたいと思っております。なお、人数はMAX200名程の予定です。
ランダムではなさそうなので伺いますが、チーム番号はどうやって決めるのですか?まず必ず数値なのかというのと例えばリス組が5人でクマ組は6人とかいうのはどう指定するのが実態に合いますか?物理オフィスに左右されますよね??
メールはいつ出すのですか?フォーム投稿直後?それともある時間にまとめて?社員が応募してなかったら(座席にあまりがあったら)どうすべき?
仕様をきちんとお伝えできておらず、申し訳ありません。 また、色々なリスク含め、ご検討いただきまして、本当にありがとうございます。 今回、実現したい内容としては、懇親会の出席者200人が12チーム(各17名づつ)に分けられるように、席を配置したいと思っております。 毎日実装はせずに、本ツールでは1回のみ実装する形となります。 なお、回答に記載いただきました200名全員が、フォーム投稿しなかった場合の対処をどうすべきか?という点については、 当日欠席者もいると思いますので、チームの人数に多少ばらつきが生じてしまうのはやむを得ないと思っておりました。 メールは、フォーム投稿直後に本人へ返信したいと思っておりました。 素人考えにて、混乱させてしまい申し訳ありません。 上記内容含めましても、やはり現実的に難しい場合は、お教えいただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー

