key-value ペアをクラウド(google driveのappdataスペース)上に保存するモジュールです。local storageと同様の手触りで使用できるようなインターフェースを作成しました。
シ楽バスのユーザーデータをクラウド上に保存することを目標に作成しました。
https://syllabusbackend.onrender.com/
最上段のkeyとvalueフィールドに何か入力しsetボタンをクリックすることでkey-valueペアが保存されます。 中段は保存されたkey-valueペアを検索することができます。 下段はkeyを指定してデータを削除することができます。keyが存在し正しく削除された場合はtrue、削除できなかった場合はfalseが表示されます。
この例はreact+typescriptのものですが、純粋なhtmlでモジュールを使用する例も「html-sample」に挙げています。ただしapikeyなどの環境変数を省いているため動作しません。html-sample/build/index.js で使用感を確認できると思います。
https://drive.google.com/drive/settings
にアクセスし、SyllabusBackendをドライブから切断してください。

key-valueペアはシリアル化され、ユーザーのgoogle driveのappDataFolder下に保存します。このサービスがユーザーのドライブにアクセスすることを承認してもらうためOAuthの手順を踏ます。 この際、このサービスがユーザーデータのどこまでアクセスする予定かを示す必要があります。この範囲(スコープ)はauth/drive.appdataに設定しており、サービス専用のフォルダをユーザーのGoogleドライブに作成することが可能になります。
このスコープは「非機密のスコープ」に分類されておりリリースの際Googleの審査を受ける必要がない一方、専用フォルダの外(例えばマイドライブ)にアクセスすることはできません。
DriveModuleクラスに主要なメソッドが定義されています。
async setItem(key: string, value: string): Promise<void|err.ErrorInfo>key, valueのペアを保存する非同期メソッドです。例外が発生した場合はErrorInfoのインスタンスが返ります。keyを空文字にすることはできません(ErrorInfoインスタンスが返ります)。async getItem(key: string): Promise<string | undefined | err.ErrorInfo>keyを指定してvalueを取得する非同期メソッドです。keyが存在した場合は結果が文字列で返されます。存在しない場合はundefined、例外が発生した場合はErrorInfoのインスタンスが返ります。async removeItem(key:string): Promise<boolean|err.ErrorInfo>keyを指定してkey, valueペアを削除する非同期メソッドです。keyが存在した場合は削除しtrueを、存在しない場合は何もせずfalseを返します。エラーの場合はErrorInfoのインスタンスを返します。async clear(): Promise<void|err.ErrorInfo>ユーザーデータのファイルを削除する非同期メソッドです。ErrorInfoの型ガードにはIsError関数を利用してください。
実際の利用はsrc/App.tsxを参考にして頂けたらと思います。
google のアクセストークンは1時間で期限切れとなります。通常はリフレッシュトークンを用いてトークンの更新を行うのですが、これにはclient secretを用いてauthを行う必要があります。これには別に認可サーバー or firebaseなどのサービスを使う必要があります。そのためこのモジュールだけでは1時間ごとに認証が要求されてしまいます。

