ラベル Google+ の投稿を表示しています。 すべての投稿を表示
ラベル Google+ の投稿を表示しています。 すべての投稿を表示

2025年4月4日金曜日

Gmailサービスのない既存メールアドレスでの無料版 Googleアカウントの作成方法

無料版 Gmailアドレス( @gmail.com )ではなく、すでにお持ちのメールアドレスで Google アカウントを作成したいときもあります。たとえば、 Google グループ管理、Googleドライブでのデータ共有など、Googleアカウントが必要なケースもあるためです。

なお、アカウント作成の全般的な作り方については、下記を参考にしてみてください。
ここでは、「Gmailサービスのない既存メールアドレスでの無料版 Googleアカウントの作成方法」に特化して説明します。また時どき UI が変更されたりします。下記については 2025年4月4日時点の情報です。

Gmailサービスのない既存メールアドレスでの無料版 Googleアカウントの作成方法


Google アカウントの作成( Google アカウントヘルプ) 


上記リンク先のスクリーンショット

より、「自分用」を選択

STEP 1. 姓名を入力



STEP 2. 生年月日、性別を入力



STEP 3. アカウント種別の選択


既存のメールアドレスを使用する」をクリックしてください。


STEP 4. Googleアカウントを作成したいメールアドレスを入力



STEP 5. メールアドレスの所有確認



STEP 6. パスワードの作成



*パスワード作成の次に、無料版 Gmail ( @gmail.com )では、再設定用のメールアドレスの追加をおすすめされますが、「Gmailサービスのない既存メールアドレス」の場合には、そのメールアドレス自体が、再設定用メールアドレスとして自動登録されます。

STEP 7. セキュリティチェック(SMSが使える電話が必要)


入力した電話番号宛にショートメッセージ(SMS)を送ります。その番号を入力する必要があります。


STEP 8. セキュリティの強化確認


予備の電話番号の登録を聞いてきますので、携帯番号を入れておくとよいかと思います。




STEP 9. 利用規約への同意




中略

下記のように「同意する」ボタンをクリック


以上を経て、下記のような Google アカウント管理画面がでてきたら、作成完了です。



推奨. 2段階認証プロセスを有効にする


パスワードが何かの拍子で漏洩(パスワードの使い回しをしているなど)してしまった場合を想定し、アカウントの強化のために、2段階認証を有効にしておくことがお勧めです。



2 段階認証プロセスを有効にする - Android - Google アカウント ヘルプ

2025年4月4日 @kimipooh

2023年5月30日火曜日

突然エラーになってログインできなくなったアカウントは「停止されたGoogle Workspaceアカウント」と関連はあるのか

5月か6月ぐらいのこの時期ぐらいに、アカウントに突然ログインできなくなったという話が時々でてきます。その場合、無料版 Gmail( @gmail.com )ではなく大学等学校から貸与されたアカウントの場合もあるかもしれません。

大学では、データ移行のために卒業後(離職後)一定期間(30日だったり 90日だったり)の猶予期間が設けられている場合もあります。そうした場合には、即時使えなくなるのではなく、少したってから使えなくなります。

さてここでは、組織的に管理運用される Google Workspaceのアカウントが管理者によって「停止」された場合、利用者側からみてどのような挙動になるのか検証した結果を備忘録として残します。この検証は 2023年5月30日のものであり、将来的なアップデートなどによって変更されることがある点はご注意ください。

以下検証した結果、「突然ログインエラーになり、パスワードを入力してもエラーになる」ちう現象がこのケースでは起こるということになります。

特に学校から貸与されたアカウントで長らく Googleフォトなどデータを蓄積していた場合(そういう認識なく)、そのデータに突然アクセスできなくなるので注意が必要です。卒業を控えている場合には、自分がどのアカウントでデータにアクセスしているのか、保存しているのかを改めてチェックするとよいかと思います。


停止されたアカウントへメールした場合


無料版 Gmailから、停止されたアカウントへメールした場合、すぐに配送できなかったというエラーが返信されました。理由は、アドレスが存在しないかアクセスできないかのいずれかだということです。


停止されたアカウントで Googleへログインした場合


メールアドレスとパスワードでログインした後に、下記のように「アカウントが無効になっています」とともに、いつ利用できなくなったのか(停止されたのか)の情報も出てきます。

なおアカウントが完全に削除されてしまうと、下記のようにログインするためのメールアドレスを入力したあとに、アカウントが見つからないというエラーになります。


次にスマートフォン上ではどのようになるかを検証してみます。

iPhoneの場合


標準メールアプリ


設定 > メール > アカウント > [Google アカウント] をみると、「アカウントにアクセスできませんでした。」というエラーともに、「パスワードを再入力」画面がでます。そしてパスワードをいれてもエラーのままです(アカウントが停止されているから)。


また、停止されている状態で、設定 > メール > アカウント > アカウントを追加 よりアカウントを追加しようとすると、メールアドレスとパスワードを入力後に下記のように「アカウントが無効になっています」とともに、いつ利用できなくなったのか(停止されたのか)の情報も出てきます。



Gmailアプリの場合


Gmailアプリに追加した、 Google Workspaceアカウントが停止された場合、Gmailアプリを同期(読み込み直す、起動しなおす)するとGoogle Workspaceアカウントの設定そのものが消えます

下記のように追加されていても、アカウントが停止されるとGmailアプリから設定そのものが消えるということです。


また再度 Gmailアプリから追加しようとしても、パスワードが正しくないとエラーになります。


Android 13(Google Pixel)の場合

アカウントが停止されると、設定 > パスワードとアカウント > [Google アカウント] > アカウントの同期 において「現在同期で問題が発生しています。しばらくお持ちください。」とでます。


またその状態で、Gmailアプリからメールを送信すると、送信したメールは「送信済み」に入らず、「送信トレイ」に「キューに追加しました」として残ります。同期できないので、アカウント停止された場合には、送信されずにそのままの状態になるということです。


なおデバイスからアカウントを削除して追加し直そうとすると、メールアドレスとパスワードを入力した後に、「アカウントが無効になっています」とともに、いつ利用できなくなったのか(停止されたのか)が表示されます。


以上のように、会社、学校等が保有する独自ドメインで Google Workspaceを契約された場合、そのアカウントが組織側で停止されると、上記の振る舞いになるということになります。

2023年5月30日 @kimipooh

2023年5月11日木曜日

Google Bard の試用(Google I/O 2023の日本語対応発表をみて)

 Google I/O 2023 において Google Bard 日本語対応(日本語と韓国語)したという発表があったので早速使ってみました。

無料版 Gmailを持っているなら、Bardへのアクセスすると試用に関して同意画面が出てきて同意すると使える画面が出てきます。Google Workspaceの場合には、管理者による Early Access Apps サービスを有効化する必要があります。

まだ試用版ということで、間違った情報が結構でてきている感じはします。そこは、「他の回答案を表示」をクリックして、そちらをチェックする。Good、Badボタンを押して評価することでより良くしていくというのも大事かなと思います。

またGoogleドキュメントや Gmailへのエクスポート機能もありますね。こちらはコピー&ペーストでも代用できそうな感じはします。いずれにせよ、これで ChatGPTなど競争が激化していって、5年、10年後にはどうなっているのかワクワクしますね!

2023年5月11日 @kimipooh

2022年12月8日木曜日

ダイヤモンド プロダクトエキスパートと私

2011年6月に、日本語版の Googleヘルプフォーラム(現Googleヘルプコミュニティ)で国内で初めてトップレベルユーザー(現プロダクトエキスパート)に就任してから、11年半ぐらいになる 2022年11月に、Gmailヘルプコミュニティにおいて日本で初めて最高位となるダイヤモンドプロダクトエキスパートに認定されました(他のいくつかのプロダクトではすでにダイヤモンドプロダクトエキスパートはいます)。

特にそれを狙ってやっていたわけではありませんが、結果的に認定されこうして額縁に入った認定証が送られてくると嬉しいものですね!

これまで、Gmailを皮切りに Chrome、アカウント、グループなど様々なヘルプコミュニティで活動公開プロフィール参照)してきました。またコミュニティに関連するイベントで海外に招待していただき、様々な刺激を受けることが出来ているのは、いつもワクワクしています。

今後も引き続き、よく利用し、よくお世話になっている Googleプロダクトを楽しみつつ、貢献していければと思います。

2022年12月8日 @kimipooh

2021年4月12日月曜日

Redmineのサーバー移行(4.0→4.1.2)とGoogle認証プラグイン

サーバー移転したとき苦労したので、備忘録として残しておきます。

Redmime 利用しているGoogle認証プラグインは、「Redmine Omniauth Google plugin」に対して

の修正版を施したものです。こちらは、redmine 4.1.2 でも動作します。

移転先は、さくら VPS(CentOS Stream8)です。


関連情報


STEP 1. 新サーバーに Redmine 4.1.2 を新規導入


とても長い道のりがあります。
基本的には上記サイトの通りにセットアップするとよいです。
  1. DB: MariaDB 10.3.x
  2. Perl: perl 5.26
  3. Ruby :  2.6.x 
  4. Unicorn(自動起動)
  5. Nginx 1.18(非暗号, 自動起動)
ここまでうまくいけば、次に Let's Encrypt を使った常時SSLで redmine を動かしたいと思うはず。

STEP 2. 通知のためにメールサーバ(postfix)を導入しよう


Let's Encrypt の証明書通知のために、メールが送信できる環境が必要です。今回は他のメールサーバーを使わず、自前で完結することを想定しています。そのため postfix をインストールします。postfixをインストールしたなら、mailコマンドも使えるようにしておくとなにかと便利です。

dnf install postfix
dnf install mailx

上記2つコマンドで mailコマンドと postfixをインストールします。
今回は完全にローカルでしか使わないので、外部からの 25/tcp を許可する必要はありません。IPv4 のみで良い場合、下記のように inet_protocols を ipv4 にしておくとよいです。

/etc/postfix/main.cf を編集

inet_protocols = ipv4
myhostname = ホスト名(FQDN)
mydomain = ホスト名(FQDN)

上記3つを設定したら、

service postfix start
systemctl enable postfix

で自動起動しておけばよいです。
かりにホストが、hogehoge.example.com であるなら

echo test  | mail -s 'test'  自分のメールアドレス

として自分にメールしてみましょう。
たとえば root ユーザーで実行すると

root@hogehoge.example.com からメールが届くはずです。

また /etc/aliases を編集し
root: サーバーのシステム通知をうけるメールアドレス

をいれて
newaliases
にて、エイリアスデーターベースを更新しておきましょう。このあたりはサーバー管理の問題なので、詳細は割愛します。

STEP 3. Redmine を Let's Encrypt を使った常時SSL化してみよう



証明書発行に、certbot を利用する場合、

http://ホスト名(FQDN)

が外部からアクセスできる状況が必要です。実際には Let's Encrypt 側から http://ホスト名/.well-known/ 以下にアクセスができる必要があります。 

さくらVPSであれば、コントロールパネルのパケットフィルターから一時的に 80/tcp を外部から許可しましょう。なお 443/tcp (https://)については、IP制限をかけるなど限定接続可能なら、そのほうが安全です。

nginx の場合の Let's Encrpyt 設定方法

の設定が終わっているとします。

SSLサイト:https://hoge.sample.com 

とする場合、

https://hoge.sample.com/.well-known 以下に対するアクセス権限が必要です。常時SSLサイトにしているなら、上記フォルダ以外を https へ転送すればよいです。

server {
    listen 80;
    server_name hoge.sample.com;
 
    location /.well-known {
      root /var/www/certbot/;
    }
 
    location / {
      return 301 https://$host$request_uri;
    }
}

上記のように、http://hoge.sample.com/.well-known 専用の root ディレクトリを指定して、実際にそのディレクトリを作成してください。ここは certbot コマンドによって、一時的に証明書関連のデータが保存されます。実行完了後、データは削除されます。

また
/etc/letsencrypt/renewal/hoge.sample.com.conf の
[[webroot_map]]
hoge.sample.com = /var/www/certbot/

のように webroot_map を上記 http://hoge.sample.com/.well-known で指定したルートディレクトリにしておきましょう。

設定がうまくいっていれば、

/etc/cron.d/letsencrypt で設定されている コマンド
  • certbot renew --post-hook "systemctl restart nginx"
を実行して、うまく更新されていることを確認しましょう。

次に
を参考に nginx の設定を変更します。
 redmine 用の設定
/etc/nginx/conf.d/redmine.conf を上記リンク先にあるように編集します。

ただし、後ほどインストールする Google 認証プラグインのため、下記の赤部分を追加してください。これを追加することで redmine の back_url が http:// から https:// に切り替わってくれます。

    location @app {
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_connect_timeout 60;
        proxy_read_timeout 60;
        proxy_send_timeout 600;
        proxy_pass http://unicorn;
    }
    
これで、
https://ホスト名(FQDN)

としてアクセスできたら成功です。

STEP 4. Redmine データの移行


を参考に、元サーバーから
  1. files フォルダ
  2. themes フォルダ内の利用テーマフォルダ
  3. plugins フォルダ内の利用プラグインフォルダ
  4. redmine 用データベース
をバックアップしましょう。

新規インストールしたのと同じデータベース名(上記例だと redmine)にすると、
私の場合にはエラーがでたので
redmine2 など別のデータベースを作成して、そちらにインポートするのがよいと思います。

DBをインポートする、変更した場合にはその都度
redmine のトップフォルダで

bundle exec rails db:migrate RAILS_ENV=production
bundle exec rails redmine:plugins:migrate RAILS_ENV=production

をすること。

プラグインは個別に移行が必要かもしれないので、細かいところは省きます。
プラグインを出し入れした場合

redmine のトップフォルダで

bundle install
systemctl start redmine-unicorn
systemctl status redmine-unicorn

をしましょう。これで unicorn が fail になるようなら、そのプラグインが新しい redmine に対応していないことになります。それをフォルダから外すなりして、上記コマンドを実行しなおしてください。

files はそのまま入れ替えてください。

テーマ内の利用テーマフォルダもそのまま入れ替えてもいいですが、新しいバージョンが出ているなら更新することも検討すればよいです。

Google Developer Console にログインして、

https://ホスト名(FQDN)

を追加しておく必要があります。

今回ハマったのは、
  • proxy_set_header X-Forwarded-Proto $scheme;
の設定をいれていなくて

https://ホスト名(FQDN)/oauth_google?back_url=http%3A%2F%2Fホスト名(FQDN)%2F

のように back_urlが http なので、Google認証できないというものでした。

2021年7月2日 更新
2021年4月12日 @kimipooh

2019年12月12日木曜日

Google Apps Script を使って特定ファイルを期限付きで共有してみよう!

これは、Google Products Advent Calendar 2019 の12日目(12月12日)の記事です。

筆者の活動はだいたい、筆者ブログでまとめています。Google関連では、現在 Gmail, Googleアカウント, Chrome のヘルプコミュニティにおいて、プラチナプロダクトエキスパートをしています。何故エキスパート(旧名トップレベルユーザー)になろうとしたのかの経緯は、こちらの記事で書いています。

Advent Calendar は、12月1日からクリスマスまで特定のテーマを決めて、皆でブログを書いてバトンを繋げていくという催しです。IT業界では割と浸透しているかなぁと思います。まだ前半になるため、なにか Googleに関して書きたいことがある!という場合には参加してみてください! 筆者も WordPress Advent Calendar に何度か参加したことがあったのですが、ご無沙汰になってました(末尾参照)。最近 Google Apps Script でいろいろやっていることもあって、それに関して残したいものはここのブログに書いています(末尾参照)。それもあって、年内にもう一記事かくか!と思い立ったのです。

目標と手順


さて、Google Drive では、ダウンロード期限のついた共有ができますが、それを Google Apps Script で自動化したい!というのが目標です。それができたら、たとえばダウンロードサイトのようなものを Google Drive で実装することもできるでしょう。流れとしては
  1. Google フォームでダウンロード申請を行ってもらう
  2. 申請内容は Google スプレットシートに保存
  3. Googleスプレットシートに保存された時に、Google Apps Scriptが実行され、次の動作をする
    1. 特定ファイル(フォルダ)に対して、申請者のGoogleアカウントを読み取り専用で共有設定する
    2. 共有設定解除のスケジュール設定(トリガー)を追加する
    3. 共有リンクをメール通知する
になります。これを実装するには次の6ステップになります。
  1. Google フォームでダウンロード申請を行ってもらう
  2. 申請されたら Googleスプレットシートに申請データを保存
  3. Googleスプレットシートに Google Apps Script を設定
  4. Google Apps Script の動作テスト
  5. トリガー設定
     Googleスプレットシートに申請データが保存されたら、Google Apps Scriptを実行
  6. 最終テスト

というのがもっともシンプルです。これを順を追って説明します。また説明を簡略化するために、Google Apps Script も非常にシンプルな構成にしています。

Step 1. Googleフォームでダウンロード申請を作成する


フォーム利用者は、メールアドレスは必須です。実際にはダウンロードするときに、そのメールアドレスで Googleアカウントをとってもらい、そのメールアドレスでログインする必要があります。Gmail は Googleアカウントなので、それでもいいです。

1. Google ドライブ > 新規 > その他 > Googleフォームを選択します。




2. 設定(歯車アイコン)より、「メールアドレスを収集する」にチェックを入れます。



3. フォームを作成します。

今回は説明を簡略化するために、メールアドレスと名前と所属ぐらいにしています。




 Step 2. 申請されたら Googleスプレットシートに申請データを保存


1. Googleフォームの「回答」タブで、「Googleスプレットシート」アイコンをクリックします。


2. 新しいスプレットシートを作成を選択して「作成」リンクをクリックします。



3. すると、下図の Googleスプレットシートが開きます。
これで、Googleフォームで送信されたデータは、このGoogleスプレットシートに追加保存されていきます。保存場所は、Googleフォームと同じフォルダに、Googleスプレットシートファイルが保存されています。




Step 3. Googleスプレットシートに Google Apps Script を設定


1. Googleスプレットシートのファイルメニューから「ツール > スクリプトエディタ」を開きます。



2. 名前のない Google Apps Script ファイルができるので、名前をつけましょう。



上図の「無題のプロジェクト」をクリックすると名前変更が可能です。
ここでは、「autoexpire_for_viewusers_to_sharedLink」としておきます。

そしてコード内にある文字をすべて消した上で
のコードをすべて選択しコピーして、Google Apps Script 内にペーストします。
すると、下図のようになるでしょう。



3. 共有したいファイルを Google Drive にアップロードし、ファイルIDをチェックする

  • https://drive.google.com/drive/u/0/folders/ファイルID

アップロードしたファイル(フォルダでもよい)にアクセスし、そのURLから「ファイルID」をコピーしてください。URLの赤文字の部分になります。
そして、コードの「ファイルID」部分をそのコピーしたものに置き換えてください。

  • var URL = "https://drive.google.com/open?id=ファイルID";
すると下図のように、ファイルIDを含んだ URLになっているはずです(ここでは一部伏せ字にしています)




そして保存してください。

Step 4. Google Apps Script の動作テスト


トリガーを設定して自動化する前に、動くかどうかのテストが必要です。


上図のように手動でデータを2つ入力してみてください。
  • タイムスタンプ:年/月/日 時:分:秒   のフォーマットで、最終行(3行目)は、現在日時から7日前のものをいれてください
    • 現在が、2019年12月5日なら 2019年11月28日 11:11:22(7日前、時、分、秒は適当でよい)
  • メールアドレス:Googleアカウントとして存在するメールアドレス(Gmail等)を入力してください。
テストは3行目のデータで行います。

テスト1) Googleフォーム送信時のテスト(共有されているかどうか)

スクリプトエディタのファイルメニューから「実行 > 関数を実行 > autoexpire_for_viewusers_to_sharedLink」を選択します。


すると、アカウント選択画面が出てくるので、今ログインしているGoogleアカウントを選択します。次に、無料版 Googleアカウントの場合には、作成したスクリプトが安全かどうかわからないので警告がでます(G Suite アカウントならこれはでないはずです)。



上記の「詳細」リンクをクリックし、


 「autoexpire_for_viewusers_to_sharedLink(安全ではないページ)に移動」リンクをクリックしてください。すると、autoexpire_for_viewusers_to_sharedLink に対して、Googleドライブへのアクセス許可を聞いてきます。「許可」してください。

エラーの場合には、画面上部にビックリマークとともに赤文字でエラーが出ます。それがでない場合には、実行は成功しているはずです。詳細は、編集 > 現在のプロジェクトのトリガーを開き、「エラー率」が0ならエラーなしです。より詳細は「実行数」をみるとわかります。

設定したファイル(フォルダ)の共有設定について、Googleスプレットシートの2行目のメールアドレスが追加されていることを確認してみてください。

またメール通知がうまくされているか確認してみてください。


テスト用では、有効期限は本日の日時になっているはずです。

テスト用データでは、解除トリガーは設定されません。理由は7日前の申請にしているため、現在時間 > 申請時間 + 7日 となってトリガーが発動しない条件になっているためです。これは最終段階でテストします。

テスト2)共有されたユーザーの共有解除


今回は7日後のユーザーの共有解除ができる設定になっています。
そして3行目は、7日前のデータで入力していますので、このユーザー(メールアドレス)の共有解除を手動でできるはずです。

スクリプトエディタのファイルメニューから「実行 > 関数を実行 > autoExpireSharedUsers」を選択します。こちらの関数がGoogleスプレットシートに入ったデータのうちタイムスタンプが7日以前(実際には AfterDayの設定値)の共有を解除すr


エラーの場合には、画面上部にビックリマークとともに赤文字でエラーが出ます。それがでない場合には、実行は成功しているはずです。詳細は、編集 > 現在のプロジェクトのトリガーを開き、「エラー率」が0ならエラーなしです。より詳細は「実行数」をみるとわかります。

エラーがなければ、共有解除されていることを確認してみてください。

STEP 5. トリガー設定(Googleスプレットシートに申請データが保存されたら、Google Apps Scriptを実行)


さて最後のトリガー設定です。

1. ファイルメニューの「編集 > 現在のプロジェクトのトリガー」を選択します。




4. 「トリガーを追加」ボタンをクリックして、トリガー設定をしてください。



実行する関数:autoexpire_for_viewusers_to_sharedLink
イベントのソースを選択:スプレットシートから
イベントの種類を選択:フォーム送信時
エラー通知設定:今すぐ通知を受け取る




アカウント選択画面が出てくるので、今ログインしているGoogleアカウントを選択します。次に、無料版 Googleアカウントの場合には、作成したスクリプトが安全かどうかわからないので警告がでます(G Suite アカウントならこれはでないはずです)。
*もしかしたら、STEP 4.  のテストで権限を付与しているので警告が出ないかもしれません



上記の「詳細」リンクをクリックし、


 「autoexpire_for_viewusers_to_sharedLink(安全ではないページ)に移動」リンクをクリックしてください。すると、autoexpire_for_viewusers_to_sharedLink に対して、Googleドライブへのアクセス許可を聞いてきます。「許可」してください。

そして保存すると、下図のようにトリガーに追加されました。



これで、今回作成されたGoogleフォームで送信された時に、「autoexpire_for_viewusers_to_sharedLink」が実行されることになります。

STEP 6. 最終テスト


Googleフォームから入力してみましょう。



そして、

1. Googleスプレットシートにデータが保存されていることの確認
2. 登録したメールアドレスに通知が届いていることの確認
3. Google Drive においたファイル(フォルダ)の共有設定に登録したメールアドレスが追加されていることの確認

を確認できたら完成ということになります。


4. トリガー(Googleスプレットシート > 編集 > 現在のプロジェクトのトリガー)に、「autoExpireSharedUsers」が追加されていること、その実行時間がタイムスタンプの年月日+7日後であることを確認してみてください。



のエラー率あたりにマイスポインタをもってくると編集アイコン(鉛筆マーク)がでます。そこをクリックすると


のようにいつ実行されるかの日時がでてきます。
この日時を1, 2分後に変更して、トリガーが実行されるか確認してみてください。
トリガーが実行されると、そのトリガーのステータスは「無効」になって残ります。

これは消しても構いませんし、実行後のトリガーだという証拠として残しておいても構いません。

なお手動で一連のデータを消す場合には、
  1. 共有解除のトリガーを削除
  2. 共有設定を解除
  3. Googleスプレットシートからデータを削除
  4. Googleフォームからデータの削除
で可能です。

共有ドライブ(旧チームドライブ)でも使えるが十分な注意が必要


まず共有ドライブは、チームで作業するためが目的になります。ですので管理者が適切に共有ドライブのユーザー管理をしなければなりません。今回紹介したシステムを使えば自動登録は可能ですが、不特定多数が登録されてしまう可能性があることに留意する必要があります。
活用を鑑みると、Googleスプレットシートに手動で登録して、手動で Google Apps Script を管理者が実行することで、いちいち共有ドライブにログインして設定する手間は省けます。また一時的にダウンロードさせたいデータもあるでしょう。そうした場合には役立つものと思います。

注意点
  1. 共有ドライブの制限にあるようにダウンロード制限もあるので注意
  2. ドライブ ユーザーの共有権限を設定する(G Suite管理者によってドメイン外ユーザーが禁止されていると、ドメイン内ユーザーしか追加できません。
  3. 共有ドライブに対してユーザー追加できる権限を持つアカウント(G Suite)で Google Apps Script を実行する必要がある。
Googleフォームを経由する場合、URL を知られれば誰でもアクセスできてしまうので、知らない無料版 Googleアカウントが勝手に追加されているということもあります。外部公開するダウンロードサイトならよいのですが、そうでないなら十分に気をつける必要はあるでしょう。

このGoogle Apps Script は中大規模には向かない


この Google Apps Scriptのアルゴリズムは、解除判定のためにGoogleスプレットシートから全データを一旦取得して、各行のタイムスタンプを取得し、「現在年月日 = タイムスタンプの年月日 + AfterDay」かどうかで共有解除するかを判断しています。これは共有解除のトリガーでは関数に引数を渡せないためです。

もし、時間ベースのトリガに変数を渡すGAS で書かれているようにプロパティを使って、「autoExpireSharedUsers」関数にメールアドレスを引数で渡せるなら、そのメールアドレスのみを共有解除したらよいので簡単のはずです。プロパティを使ったやり方は筆者はまだ会得しておらず、トリガーをつかうと全データのチェックが必要になってしまうわけです。で、Google Apps Script は1つの実行に対する許容時間があります。

https://developers.google.com/apps-script/guides/services/quotas

にかかれていますが、無料版 Googleアカウントで 6分、有料のG Suite なら 30分ですね。無料版だと時間が短すぎてすぐにオーバーしてしまう可能性があります。それを回避するためには処理を分割実行([GAS]実行時間6分の壁を越えよう(不死鳥関数編))するように改良すればいけるかもしれません。ただ筆者はそこまでやる労力と興味もないので、説明しません。

参考資料



Google Apps Script 関連で過去に書いた記事


  1. 【GAS】Googleドライブ / チームドライブの特定フォルダ以下のファイル一覧を表示する方法
  2. 【ボツ / 備忘録】Gmailで予約送信するための Googleフォームを作成しよう!
  3. Gmail に予約送信機能を実装するには・・・
  4. 第一回 ローカル(非公式) Google Meetup in Okayama に参加して
    • 特定条件(Gmail検索)でGmailに添付されたメールを送信者ごとにGoogle Driveに自動保存する
    • 複数のGoogle Analytics データをまとめてHTMLとPDF形式で自動メール送信する
  5. Google Apps Script を使って、特定条件に一致した Gmail の添付ファイルを Googleドライブへ保存する方法

過去参加した Advent Calendar



2019年12月12日 @kimipooh