物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

Google Apps Script(GAS)でTOTPを生成する方法

Google Apps Script(GAS)でTOTPを生成するには、SHA1を実装している外部ライブラリを使うのが良いだろう。

ウェブアプリとしてJSON形式で表示させるところまで実装したコード

function myFunction() {
  const secret = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  const cdnjs =
    "https://cdnjs.cloudflare.com/ajax/libs/otpauth/9.1.1/otpauth.umd.min.js";
  eval(UrlFetchApp.fetch(cdnjs).getContentText());

  const now = new Date();
  const code = new OTPAuth.TOTP({
    secret,
    algorithm: "SHA1",
    digits: 6,
    period: 30,
  }).generate();
  Logger.log(code);
  let objectArray = {};
  objectArray["code"] = code;
  objectArray["date"] = now;
  return objectArray;
}

function doGet() {
  const json = JSON.stringify(myFunction());
  let output = ContentService.createTextOutput();
  output.setMimeType(ContentService.MimeType.JSON);
  output.setContent(json);
  return output;  
}

参照

tanaikech.github.io

メモ: TOTPは時間ベースのワンタイムパスワード OTP