かずきち。の日記

サーバサイドエンジニアのつぶやき

【GooleAppsScript】GoogleAppsScriptを使って紹介コードを発行するプログラムを立てる【10行】

クーポンで溢れる世の中に…

昨今はクーポンやコードで溢れる世の中になりました。
マクドナルドの会計もアプリでクーポン提示…


引用:
https://www.tokupay.jp/entry/mcdonalds-coupon

世の中買い物する際にクーポンコードを入力すると割引かれる世の中になりました。
もう紙のクーポンは時代遅れチオ言っていいでしょう。
そして今まではクーポンコードを発行するのは大企業であることが多かったわけです。
しかし2023年ではマクドナルド、Amazon、Appleといった大企業は当然、コードを払い出したビジネスを行なっています。
しかしクーポンコードや紹介コードといった数字を払い出せるのは大企業だけなのか?という疑問があります。
プログラミングが身近になった今、プログラミングさえできれば自身でクーポンコードも発行できるわけです。
それも各人にカスタマイズされたコードで。
今回はGoogleAppsScriptを利用して、一意なランダムなクーポンコードを払い出すプログラムを作っていきます。

まずはコードを発行するフォームを作成

Googleフォームを利用して、まずは個人に紐付けたクーポンコードを発行するフォームを作ります。
ここまでは5分ほどで作れるかとお思います。
そして氏名を入力すると個人に紐付いた紹介コードが発行されます。

docs.google.com

C列には動的に個人名を紐付けたコードが生成されます。
C列は白地ですが、
既存参加者1のクーポンコードは「7880717」
既存参加者2のクーポンコードは「5490823」
既存参加者3のクーポンコードは「3208043」

と報いな数字7桁が生成されます。
これらコードは白色の文字で他人からは非公開にしておきます。

次は各人専用のお友達紹介フォームを作成します。

こんなGoogleフォームを作りましょう。
個人に紐づけたコードを生成するので、シンプルなものでいいです。

function myFunction() {
  const sheet_id = '14Di4VkHSxNjxlTk11SxONQQmyQ1lAmJTpkr3fBjjO-8'
const sheet_name = 'フォームの回答'

  const sheet = SpreadsheetApp.openById(sheet_id).getSheetByName(sheet_name);

  const lastRow = sheet.getLastRow();
  
  //0以上1未満の乱数を生成
  let rand = Math.random();
  //1~100の整数になるように数値計算
  rand = Math.floor(rand*10000000)+1;
  sheet.getRange(lastRow,3).setValue(rand);
}

あとはGoogleフォームで個人特有の招待コードを発行する仕掛けを作ります
まずはフォームの回答という名前のシートのシート番号を自動で格納します。
既存参加者1のクーポンコードは「7880717」
既存参加者2のクーポンコードは「5490823」
既存参加者3のクーポンコードは「3208043」
のように無作為な乱数を個人に紐づけたいので

  rand = Math.floor(rand*10000000)+1;

Math.floor(rand*10000000)にしているのは小数を除外する事・コードが0から始まる小数点であることを除外するためにこのようにしています。

あとはC列に動的に

7880717

といった紹介者を特定するアフィリエイトidが格納されます。
とは言え、こんな長ったらしい数字を控えるのはめんどくさいので、コードを事前入力します。

紹介された人向け登録フォーム

ここで肝になるのが、entry.1301079923=7880717

phpなどを学習したことがある人はわかりやすいと思いますが、この形式はhtmlでいうGET型で次のページに変数を引き渡すのに使用されます。
試しにこのリンクを踏んでみましょう。

docs.google.com

するとこのフォームでは招待コード「7880717」という数字が事前に埋め込まれます。
あとは被紹介者がコードを手入力する必要がなく、紹介者の登録が行えます。

事前入力方式は大企業も利用する

昨今はインターネットで簡単にマーケティングができる時代になったので、これなら誰でも簡単に招待コード付き始められます。
コード自体は10行なので、きちんと使い方さえ誤らなければ、面白いサービスが使えます。