見出し画像

日本語をポケベルのコードに変換してメールを送るGAS

ほぼお遊びです。


ポケベルのコードに変換

携帯電話が普及する前はポケベルが主流でした。公衆電話で数字を入力すると、相手先のデバイスにカタカナが表示される機能がありました。
カタカナに変換させるために、電話機で、「ア」なら11、「イ」なら12と入力する必要がありました。
今回のGASは逆です。
送信者側が日本語を入力すると相手先に数字が届く仕様です。

このGSの使い方

いたって簡単です。
A2に日本語(ひらがな)かアルファベットを入れる。
B2に送信先のアドレスを入れる。
そして、メニューバーにある「ポケベル変換」から「変換と送信」を選択すると、日本語は変換されて、相手先にメールが送られるようになっています。
2行目以降は最終行のA列とB列に入力されていれば実行します。

実行
変換&送信完了
相手先のメールボックス

GASとは

GASは簡単に言えばグーグルが提供しているプログラミング言語です。無料で利用できます。

シフト表のサンプルコード

GASをある程度知っている方…下のコードをコピペすれば完了です。
GASをあまりよく分からない方…コードの下に説明を詳しく入れています。ご参照ください。

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu("ポケベル変換")
    .addItem("変換と送信", "convertAndSend")
    .addToUi();
}

function convertAndSend() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // ヘッダーを設定
  if (!sheet.getRange("A1").getValue()) {
    sheet.getRange("A1").setValue("ひらがな・数字・ABC");
    sheet.getRange("B1").setValue("送信先");
    sheet.getRange("C1").setValue("ポケベル変換");
    sheet.getRange("D1").setValue("タイムスタンプ");
  }

  // A列~D列の幅を180ピクセル
  sheet.setColumnWidths(1, 4, 180);

  // A列の最終行を取得
  const lastRow = sheet.getLastRow();
  const range = sheet.getRange(lastRow, 1, 1, 4);
  const [text, email, converted, timestamp] = range.getValues()[0];

  // 変換対象があるか確認
  if (!text || converted) {
    Logger.log("変換対象がないか、既に変換済みです。");
    SpreadsheetApp.getUi().alert("変換対象がないか、既に変換済みです。");
    return;
  }

  // 文字列をポケベルに変換
  const convertedText = convertToPagerCode(text);
  Logger.log(`変換結果: ${convertedText}`);

  // C列に変換結果を設定
  sheet.getRange(lastRow, 3).setValue(convertedText);

  // メールアドレスがあれば送信
  if (email) {
    MailApp.sendEmail(email, convertedText, convertedText);
    Logger.log("メールを送信しました");

    // D列にタイムスタンプを設定(yyyy/MM/dd HH:mm 形式)
    const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy/MM/dd HH:mm");
    sheet.getRange(lastRow, 4).setValue(timestamp);
  } else {
    SpreadsheetApp.getUi().alert("送信先のメールアドレスがありません。");
  }
}

function convertToPagerCode(text) {
  const kanaToPager = {
    "あ": "11", "い": "12", "う": "13", "え": "14", "お": "15",
    "か": "21", "き": "22", "く": "23", "け": "24", "こ": "25",
    "さ": "31", "し": "32", "す": "33", "せ": "34", "そ": "35",
    "た": "41", "ち": "42", "つ": "43", "て": "44", "と": "45",
    "な": "51", "に": "52", "ぬ": "53", "ね": "54", "の": "55",
    "は": "61", "ひ": "62", "ふ": "63", "へ": "64", "ほ": "65",
    "ま": "71", "み": "72", "む": "73", "め": "74", "も": "75",
    "や": "81", "ゆ": "83", "よ": "85",
    "ら": "91", "り": "92", "る": "93", "れ": "94", "ろ": "95",
    "わ": "01", "を": "02", "ん": "03", "”": "04", "゜": "05"
  };

  const alphaToPager = {
    "A": "16", "B": "17", "C": "18", "D": "19", "E": "10", 
    "F": "26", "G": "27", "H": "28", "I": "29", "J": "20",
    "K": "36", "L": "37", "M": "38", "N": "39", "O": "30",
    "P": "46", "Q": "47", "R": "48", "S": "49", "T": "40",
    "U": "56", "V": "57", "W": "58", "X": "59", "Y": "50", "Z": "66"
  };

  const symbolToPager = {
    "!": "68", "?": "67", "#": "87", "¥": "76", "%": "89", 
    "&": "77", "*": "86", "(": "82", ")": "84"
  };

  let result = "";
  
  for (let char of text) {
    if (kanaToPager[char]) {
      result += kanaToPager[char];
    } else if (alphaToPager[char.toUpperCase()]) {
      result += alphaToPager[char.toUpperCase()];
    } else if (symbolToPager[char]) {
      result += symbolToPager[char];
    } else if (!isNaN(char)) { 
      result += " " + char;
    } else {
      result += char; // 対応する変換がない場合はそのまま
    }
  }

  Logger.log(`文字: ${text} => ポケベル: ${result}`);
  return result;
}

GASの基本から

Dドライブにアクセスして、スプレッドシートを開きます。
拡張機能からAppScriptを選択します。

下のような画面が出てきたら、function myfunctionと書かれている部分をすべて消します。

次に上記のコードをすべて選択して貼り付けます。
保存を押し、実行を押します。

以下、赤印で囲んだところを選択

実行ログに実行完了と表示されたら、スプレッドシートを見て下さい。
カスタムメニューという項目が増えています。このファイルを開けば、次回以降も表示されます。他のファイルには影響はありません。

いいなと思ったら応援しよう!