AWSのイベント登録ページのフォームを自動入力する即時実行関数作った


## 概要
AWSのイベントページの登録の際に、毎回求められる入力フォーム、あれ大変ですよね？  
  
大変ですよね？？  

blackbeltセミナーなどの登録も、アレが億劫でやめてしまったこと、ありますよね？  

ありますよね？？？

https://pages.awscloud.com/JAPAN-field-OE-nyantech-handson-ml-and-elasticsearch-2021-reg-event.html
こういうページの、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41763/ebb7939e-62bf-1e22-3fc6-a85a65662a17.png)
これです。
  

## 結論
自動入力するスクリプトを書きました。
次からはコピペでいけます。


## 以下スクリプト

引数の`userinfo`オブジェクトを、利用する方の情報に置き換えてください。  
コメントアウトしているとこの、`[選択]`と書いてある項目は、選択式になっています。  
それぞれ、関数の初めの方で定義している定数（UPPER_SNAKE_CASE）から選んでください。  

```javascript

(function (userinfo = {
  email: 'hogehoge@fuga.com', // 勤務先メールアドレス
  lastName: 'アマゾン', // 姓
  firstName: '太郎', // 名
  company: 'amazon', // 御社名
  jobTitle: 'CEO', // 所属部署名/役職
  phoneNumber: '0331234567', // 電話番号（例：0331234567）ハイフンなしでご入力ください
  mobilePhone: '08031234567', // 携帯電話などの日中連絡が可能な電話番号 （例：08031234567）ハイフンなしでご入力ください
  country: '日本', // [選択]国/地域
  zipCode: '153-0001', // 郵便番号（例：153-0001） ハイフンを入れてご入力ください
  companyCity: 'Tokyo', // 勤務先のご住所（これだけ必須項目では無い）
  jobRole: '開発者/エンジニア', // [選択]職種
  jobKind: 'ソフトウェア&インターネット', // [選択]業種
  companyType: '自営業', // [選択]会社の種類
  companySize: '1～19', // [選択]御社の従業員数
  useAWS: 'AWS を評価中または試験中', // [選択]AWSのご利用状況
  timeFrame: '3ヶ月以内', // [選択]導入予定時期
  usecase: 'モバイルアプリケーション', // [選択]ご利用用途
  eventDescription: '上記以外で、個人の学習目的', // [選択]イベントの参加目的
  marketing: 'アマゾンのメールから', // [選択]本イベントをお知りになった経緯
  purpose: '個人目的' // [選択]私は以下の目的でこのフォームへ登録しています
}) {
  const COUNTRY = [
    '日本','米国','アフガニスタン','アルバニア','アルジェリア','米領サモア','アンドラ','アンギラ','南極','アンティグア',
    'アルゼンチン','アルメニア','アルバ','オーストラリア','オーストリア','アゼルバイジャン','バハマ諸島','バーレーン','バングラデシュ','バルバドス' ,
    'ベラルーシ','ベリーズ','ベルギー','ベニン','バミューダ','ブータン','ボリビア','ブーベ島','ボスニアヘルツェゴビナ','ボツワナ',
    'ブラジル','英領インド洋地域','ブルネイ','ブルガリア','ブルキナファソ','ブルンジ','カンボジア','カメルーン','カナダ','カーボベルデ',
    'ケイマン諸島','中央アフリカ共和国','チャド','チリ','中国','香港','中国（マカオ特別行政区）','クリスマス島','ココス（キーリング）諸島','コロンビア',
    'コモロ','クック諸島','コスタリカ','コートジボワール（象牙海岸）','クロアチア','キプロス','チェコ共和国','コンゴ民主共和国','デンマーク','ドミニカ',
    'ドミニカ共和国','ジブチ','東ティモール','エクアドル','エジプト','エルサルバドル','赤道ギニア','エリトリア','エストニア','エチオピア',
    'フォークランド諸島','フェロー諸島','フィジー','フィンランド','フランス','フランス領ギアナ','フランス領ポリネシア','フランス領南極南諸島','マケドニア旧ユーゴスラビア共和国','ガボン',
    'ガンビア','ジョージア','ドイツ','ガーナ','ジブラルタル','ギリシャ','グリーンランド','グレナダ','グアドループ','グアム',
    'グアテマラ','ギニア','ギニアビサウ','ガイアナ','ハイチ','ハード島およびマクドナルド諸島','ホンジュラス','ハンガリー','アイスランド','インド',
    'インドネシア','アイルランド','イスラエル','イタリア','ジャマイカ','ヨルダン','カザフスタン','ケニア','キリバス',
    '韓国','クウェート','キルギスタン','ラオス','ラトビア','レバノン','レソト','リベリア','リヒテンシュタイン','リトアニア',
    'ルクセンブルグ','マダガスカル','マラウイ','マレーシア','モルジブ','マリ','マルタ','マーシャル諸島','モーリタニア','モーリシャス',
    'マルチニーク','マイヨット','メキシコ','ミクロネシア','モルドバ','モナコ','モンゴル','モントセラト','モロッコ','モザンビーク',
    'ミャンマー','ナミビア','ナウル','ネパール','オランダ','オランダ領アンティル','ニューカレドニア','ニュージーランド','ニカラグア','ニジェール',
    'ナイジェリア','ニウエ','ノルウェー','ノーフォーク島','北マリアナ諸島','オマーン','パキスタン','パラオ','パナマ','パプアニューギニア',
    'パラグアイ','ペルー','フィリピン','ピトケアン','ポーランド','ポルトガル','プエルトリコ','カタール','コンゴ共和国','レユニオン',
    'ルーマニア','ロシア','セントヘレナ','セントキッツ島','セントルシア','サンピエール島','セントビンセント','サモア','サンマリノ','サントメ',
    'サウジアラビア','セネガル','セルビア','セイシェル','シエラレオネ','シンガポール','スロバキア','スロベニア','ソロモン諸島','ソマリア',
    '南アフリカ','南ジョージア島および南サンドイッチ諸島','スペイン','スリランカ','スリナム','スバールバル諸島およびヤンマイエン島','スワジランド','スウェーデン','スイス','シリア',
    '台湾','タジキスタン','タンザニア','タイ','トーゴ','トケラウ','トンガ','トリニダードトバゴ','チュニジア','トルコ',
    'タークスおよびカイコス諸島','トルクメニスタン','ツバル','ウガンダ','ウクライナ','アラブ首長国連邦','英国','合衆国領有小離島','ウルグアイ','ウズベキスタン',
    'バヌアツ','バチカン市国','ベネズエラ','ベトナム','英領バージン諸島','米領バージン諸島','ウォリス','西サハラ','イエメン','ザンビア','ジンバブエ'];
  
  const JOB_ROLE = [
    '教育機関/研究者', 'アドバイザー/コンサルタント', '企業幹部', 
    '開発者/エンジニア', '起業家（創業者/共同創業者)', 'IT 幹部  ', 
    'IT 専門家または技術管理職', '報道/メディアアナリスト', 'セールス/マーケティング', 
    '学生', 'ソリューションまたはシステムアーキテクト', 'システム管理者', 
    '投資家'
  ];
  
  const JOB_KIND = [
    '農業', '自動車', 'コンピューター&エレクトロニクス', 
    '消費財', '教育および関連サービス', '金融および関連サービス', 
    'ゲーム', '官公庁、地方公共団体および関連サービス', '医療および関連サービス', 
    '接客', 'ライフサイエンス', '製造', 
    'マーケティングおよび広告', 'メディア&エンターテイメント', '製造', 
    '非営利団体', '石油とガス', 'その他', 
    '電力および公益産業', 'プロフェッショナルサービス', '不動産&建設', 
    '小売', 'ソフトウェア&インターネット', '通信', 
    '運輸&ロジスティクス', '旅行', '卸売&流通'
  ];

  const COMPANY_TYPE = [
    '教育', 'エンタープライズ', '公共機関', '官公庁', '地方公共団体', '非営利団体、非政府組織、財団法人、社団法人、宗教法人、組合組織等',
    '自営業', '中小企業', 'スタートアップ', '該当しません'
  ];

  const COMPANY_SIZE = [
    '1～19',
    '20～99',
    '100～499',
    '500～999',
    '1,000～9,999',
    '10,000~'
  ];

  const USE_AWS = [
    '現在は AWS を使用していない',
    'AWS を評価中または試験中',
    'AWS で開発 / テストワークロードを実行',
    'AWS でプロダクションワークロードを実行',
    'AWS で複数のプロダクションワークロードを実行'
  ];

  const TIMEFRAME = [
    '予定していない', 
    '3ヶ月以内', 
    '半年以内', 
    '1年以内', 
    '1年後以降で検討'
  ];

  const USE_CASE = [
    'AIと機械学習', 'バッチ処理', 'ビッグデータ、分析、ビジネスインテリジェンス', 'ビジネスアプリケーション – Microsoft',
    'ビジネスアプリケーション – Oracle', 'ビジネスアプリケーション – その他', 'ビジネスアプリケーション – SAP', 'コンテンツ配信',
    'データベース、データウェアハウス', 'DevOps', 'ゲーム', 'ハイパフォーマンス・コンピューティング',
    'IoT', 'トレーニングと認定', 'メディアサービス', '移行', 'モバイルアプリケーション', 'その他', 'ストレージ&バックアップ', 'ウェブサイトとウェブアプリ'
  ];

  const EVENT_DESCRIPTION = [
    '自社利用に対する情報収集として',
    '自社利用目的 - 検証中',
    '自社利用目的 - 本番運用中',
    '提案目的 - 今後の提案に向けた情報収集として',
    '提案目的 - 提案中及び提案を控えている',
    '上記以外で、個人の学習目的',
    '上記以外で、上長からの指示'
  ];

  const MARKETING = [
    'アマゾンの営業から',
    'アマゾンのウェブから',
    'アマゾンのメールから',
    '展示会やセミナー参加時のチラシ',
    'キャンペーンから',
    'AWSのオンライン広告から',
    'Twitterから',
    'アマゾンの Facebook ページから',
    'アマゾンのパートナーから',
    '会社の上司・同僚から',
    'その他'
  ];

  const PURPOSE = [
    'ビジネス目的','個人目的'
  ]

  document.querySelector("#mktoCheckbox_1904795_0").click();
  document.querySelector("#Email").value = userinfo.email;
  document.querySelector("#LastName").value = userinfo.lastName;
  document.querySelector("#FirstName").value = userinfo.firstName;
  document.querySelector("#Company").value = userinfo.company;
  document.querySelector("#zOPprogressiveprofilingjtitle").value = userinfo.jobTitle;
  document.querySelector("#zOPprogressiveprofilingpnum").value = userinfo.phoneNumber;
  document.querySelector("#MobilePhone").value = userinfo.mobilePhone;
  document.querySelector("#zOPprogressiveprofilingcntry").selectedIndex = COUNTRY.indexOf(userinfo.country) + 1;
  document.querySelector("#zOPprogressiveprofilingpcode").value = userinfo.zipCode;
  document.querySelector("#City").value = userinfo.companyCity;
  document.querySelector("#zOPprogressiveprofilingjrole").selectedIndex = JOB_ROLE.indexOf(userinfo.jobRole) + 1;
  document.querySelector("#zOPprogressiveprofilingind").selectedIndex = JOB_KIND.indexOf(userinfo.jobKind) + 1;
  document.querySelector("#Company_Type__c").selectedIndex = COMPANY_TYPE.indexOf(userinfo.companyType) + 1;
  document.querySelector("#Company_Size__c").selectedIndex = COMPANY_SIZE.indexOf(userinfo.companySize) + 1;
  document.querySelector("#zOPprogressiveprofilingausag").selectedIndex = USE_AWS.indexOf(userinfo.useAWS) + 1;
  document.querySelector("#Project_Timeframe__c").selectedIndex = TIMEFRAME.indexOf(userinfo.timeFrame) + 1;
  document.querySelector("#zOPprogressiveprofilingucase").selectedIndex = USE_CASE.indexOf(userinfo.usecase) + 1;
  document.querySelector("#Project_Description__c").selectedIndex = EVENT_DESCRIPTION.indexOf(userinfo.eventDescription) + 1;
  document.querySelector("#Marketing_Program_Field_1__c").selectedIndex = MARKETING.indexOf(userinfo.marketing) + 1;
  document.querySelector(`#mktoRadio_1904815_${PURPOSE.indexOf(userinfo.purpose)}`).click();
}());
```

## 使い方

1. スクリプトの`userinfo`をみなさんの情報で埋めます。
2. `(function (userinfo = {`　から　`}());` まで全部コピーします。
3. イベント登録したいAWSのイベントページを開き、デベロッパーモード（F12）を開きます。
4. Consoleタブに移動し、コピーしたスクリプトを貼り付けます。
5. Enterを押して実行します。


## 実行してみた結果
縦に長いのでスクリプトが入りきりませんでしたが、入力フォームにはちゃんと値が入りました :)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41763/39681904-df94-9187-e6c2-0f0991d10950.png)


## まとめ
これで、躊躇うことなくAWSのイベントに参加できますね！