2019年12月17日火曜日

【G Suite専用】2021年2月15日以降、Google OAuth2 非対応アプリでGoogleアカウントが使えなくなる

まず最初にG Suite アカウントに限定した話です。とはいえ将来的には無料版アカウントに波及しないとはいえませんね、セキュリティ強化の話ですので。

さて、G Suite 管理者宛にGoogleより通知がきました。
  • Starting February 15, 2021, G Suite accounts will only allow access to apps using OAuth. Password-based access will no longer be supported.
という内容です。これについては、2019年12月16日(米国時間)において
に公式情報が出ています。これによると2段階ステップで Google Auth2非対応アプリ(Less Secure Apps, 以下 LSA)による Googleアカウントのアクセスを禁止するという内容です。最近のゲーム等 Googleアカウントによるログインが必要なシステムは、Google Auth2 を基本的には使っているように見えます。しかし Outlook 2016のような Google Auth2に対応しておらず、「安全性の低いアプリからのアクセスを許可する」をしないと接続できない場合には、2021年2月15日以降は使えないということになります。これはかなりインパクトのあることだと思います。内容をよく見ると次のことのようです。

第1段階:2020年6月15日


この日付以降に初めて LSA からGoogleアカウントに接続する場合(新規セットアップとか)、 Googleアカウントにログインできなくなるため設定できないということになります。すでに設定済みの場合には、第2段階の完全廃止(2021年2月15日)までは使えるようですね。

第2段階:2021年2月15日


すべてのケースについて、LSAから Googleアカウントへの接続ができなくなります。第1段階以前に設定していた場合もすべてです。したがってこの日までに、Google Auth2 対応のアプリへ切り替える必要があります。

「アプリ固有のパスワード」(2段階認証ON)は影響をうけるのか(2020年3月6日追記)


アプリ固有のパスワードも、OAuth2 非対応であることには代わりありません。ならば、これも影響をうけるのか。G Suite管理者の一人として大きな問題なので Googleサポートに聞いてみました。結果として、「現時点では影響をうけず、対象外。しかし今後わからない」という回答でした。
まぁセキュリティの観点からは、個別パスワードとはいえこれも使えなくしたいのだろうなぁとは個人的に思います。ともあれ、これで選択肢は増えました。
すなわち

1. 2段階認証を有効にしてアプリ固有のパスワードを使ってもらう
*2段階認証促進にもなるので、そちらを優先する

2. アプリ固有のパスワードもいつだめになるかわからないので、この際すべて駄目だということにして対応する

ということですね。

具体的な影響例


G Suite 管理者宛に通知された内容からは
  1. Outlook 2016 あるいはそれ以前のバージョン
  2. Thunderbird やそれ以外の電子メールソフトの場合、IMAP + OAuth 認証設定に切り替えること
  3. iOS, MacOSのメールアプリの場合、一度アカウントを削除して再登録が必要
  4. CalDAV を使ってカレンダーアプリは、OAuthに対応する必要があり。
  5. iOS, macOS のカレンダー(Apple純正)をつかう場合には、一度アカウントを削除して再登録が必要
実際にテストすると Windows版Outlook 2016も 2019も OAuth2に対応していない模様(Mac版Outlookは対応しているのに)。出来るとウェブサイトにあるのですが、手持ちのいくつかでは出来ない例ばかり。このあたりが不安定だと Windows版Outlook で Gmailの送受信をするのは安定性にかけるなぁという感じですね。

いずれにせよ2段階認証を促進せざるをえなくなる。スマホやタブレット、ガラゲーすらもっていない人たちもいるなかで、セキュリティキーなど2段階認証の認証方式をどうしていくのかが課題だなぁと思いました。

また macOS も古いバージョンだと OAuth2 に対応してない場合があり、そうなると標準のメールアプリではGmailの送受信ができなくなりますね。

Gmailの送信サーバーを使うウェブサービスも影響をうける


無料版Gmailは対象外なのでそこまで影響は大きくないだろうと思いますが、たとえばメールサーバーを用意していないウェブサーバー上のウェブサイトで問い合わせフォームなどを設定している場合、Gmailの送信サーバーをG Suiteアカウントで使えなくなる可能性が高い(OAuth2非対応の場合)ということになりますね。具体的には、WordPress のサイトの場合、


のような設定は無理(OAuth2非対応のため)になるってことです。
まぁ無料版Gmailは使えますけどね(G Suite のGmailのみがだめになる)。

もちろん、2段階認証を有効にしてアプリ固有のパスワードを発行すればいいのですが、それはそれでかなりの手間になります。これは痛い。私も送信サーバーのない外部Webサーバーをいくつか使っており、送信にはプラグインで G Suite のGoogleアカウントを使って Gmail のSMTPサーバーを使っているのですよね。まぁ DNSのMXレコードを変更してオンプレミスのSMTPサーバーを使ってもいいんですけど、オンプレミスのSMTPサーバーはできれば廃止したいなぁと思っているのですよね、、うーん。

Gmail SMTPプラグインだと、OAuth2 対応しているっていっているのでこういうものへの切り替えがいいのかなぁ。

とまぁ影響が大きんです。猶予まであと1年少し。少し悩まないとだめですねぇ。

2020年3月6日 加筆修正
2019年12月17日 @kimipooh

2019年12月16日月曜日

gdrive コマンドで API 使用制限(Rate Limit Exceeded)が出た場合の対応方法

gdrive (GitHUB) コマンドは、 Googleドライブを操作するコマンドツールの一つです。Linux OS 上のデータバックアップなんかに役立ったりします。使い方については過去に

にて紹介しています。
ただしこの gdrive、開発者がもつアカウントで APIにアクセスするため、皆がつかうと一日のAPI制限にすぐに到達してしまいます。これを解決する方法について纏めておきます。

解決策は、「gdrive を自分のアカウントの APIを使ってコンパイルする」です。

gdrive を自分のアカウントの APIを使ってコンパイルする


1. Google Developer Console で Client ID と Client Secret を発行する
2. gdrive ソースに「1」の情報を付与してコンパイル(go言語)

という流れになります。


をもとに当時試した資料を


においておきます。

2019年12月16日 @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

2019年10月24日木曜日

Chrome 78 がクラッシュする問題(Symantec セキュリティ対策ソフトとの互換性?)

Symantec Endpoint Protection を Windows Server 2016 経由で管理している場合に、Google ChromeとEdge ブラウザで不具合が生じるみたいですね。

によれば、

  • Windows Server 2016 に Symantec Endpoint Protection がインストールされている
  • Windows OS の Symantec Endpoint Protection のバージョンが 14.2 より古い
という条件下で、
  • Google Chrome 78.0.x (October 2019)
  • Microsoft Edge Chromium 78.0.x
のブラウザがウェブサイトを何も開けない現象が起こるようです。


解決方法


  1. 端末のSymantec Endpoint Protection を14.2 かそれ以上のバージョンにアップデートする
  2. 端末のSymantec Endpoint Protection のスキャン除外対象に「MSEdge.exe」「Chrome.exe」を入れる 
  3. Chromeを「--disable-features=RendererCodeIntegrity」オプションをつけて起動する

の3つばかりの方法がありますね。どれもクライアント端末側で対応しないといけないのが大変なのですが、「2」の除外は管理サーバーから設定を一斉配信できると思うので、暫定対策としてはありかもしれません。ただセキュリティ対策ソフトのチェック対象外になってしまうのでそれが悩ましいところですね。なので「1」をしていくしかないだろうなぁとは思います。

2019年10月24日 @kimipooh

2019年9月6日金曜日

Google アカウントの名前変更がお手軽になった模様!

Google アカウントの名前とその他の情報の変更(Google アカウントヘルプ)の「詳細」にある「名前」を開くと

アカウントを作成してから 2 週間が経過している場合、1 分間に 3 回までの頻度であれば、何度でも名前を変更できます。

だそうです。これまでは 90日に 3度というポリシーだったので、これはもう自由に変更できるようになったということでしょうかね!少なくても、うっかり間違って名前変更した場合の修正は簡単にできるようになったということなので、朗報かな!
ただし作成して2週間は自由に変更できないようなので、注意は必要ですね。

2019年9月6日 @kimipooh

2019年8月14日水曜日

2019年12月1日より、「キャリアメール」による Google の2段階認証が廃止へ・・・

今日、下記のようなメールが各アカウントに来ました。
リンク先(詳細)をみると、
であり、どうやら2段階認証の確認コード送付についてキャリアメールはできなくなるということです。電話番号による SMSか音声メッセージに絞られるということですね。Googleアカウントは様々なところで使っているため、アクセスできなくなると大変です。確認コードは複数の手段(後述)で受け取られるようにしておくのがよいです。


設定の見直し


今回は2段階認証を有効にしていた場合
にアクセスし、下記のようにキャリアメール(筆者の場合には @ezweb.ne.jp の auの携帯メール)があったので通知がきたということでしょう。もしキャリアメールしか設定がなければ、電話番号による設定を追加して「確認済み」と出た状態で、キャリアメールのほうを削除するとよいですね。



削除は、右の編集アイコン(ペンのアイコン)をクリックし


にある「電話番号の削除」をクリックすればよいです。まぁ電話番号じゃないんですけれどね。

復旧のためのオプションは複数設定しておこう!


Googleアカウントにログインできなくなった。復旧オプションも設定していないという例は数多く見てきました。Googleアカウントは、Androidスマートフォンやタブレットをつかっているとバックアップデータを保存したり、Googleフォトなどに写真データをバックアップしたり、Google Play での購入をしているとそうした情報も紐付いています。これが使えなくなると大ダメージです。そのため、復旧オプションはできるだけ多くしておくのがよいです。

  1. SMSによる確認コード(電話番号は変更するとき注意!!)
  2. Google認証システムアプリによる確認コード(オフラインで利用可能)
     参考: https://support.google.com/accounts/answer/1066447?co=GENIE.Platform%3DAndroid&hl=ja
  3. 「Gmailアプリ」や「Google検索アプリ」によるログイン
     参考:https://kitaney-google.blogspot.jp/2016/06/google.html
  4. 信頼できるデバイスとして登録しておく
     参考:https://support.google.com/accounts/answer/2544838?hl=ja
  5. バックアップコードを発行し、保存しておく
     参考:https://support.google.com/accounts/answer/1187538?hl=ja

特に「2」「3」などをそれぞれ別の端末でしておくと、1つの端末をなくしたとしてもログインできなくなることはありません。そうしたリスク管理をしておくのがよいと思います。「5」も非常に大事ですね。

あとは再設定用のメールアドレス、電話番号を登録しておくことです。






2019年7月5日金曜日

Chrome 75 以降で MHTML形式での保存をつかう方法

以前は、chrome://flags に「Save Page as MHTML」という隠し属性を有効にすることで使えていました。しかし、Chrome 75のいずれかのバージョンからこれが消えてしまって使えなくなったということ。
Chrome拡張機能「シングルHTMLダウンローダー」を使えば、可能だそうですが、 Chrome単体でそういった機能は本当になくなったのでしょうか。
調べてみると、使える方法を見つけたので紹介します。
なおこれもまたいつ使えなくなるか分からない方法です。

起動時プションに「--save-page-as-mhtml」を指定する


「名前をつけて保存」について、



通常(起動オプション「--save-page-as-mhtml」なし)


起動オプション「--save-page-as-mhtml」あり


となり、 mhtmlをサポートしているのが見て取れます。


macOS 
  1. Chromeを終了する
  2. ターミナルを起動する
  3. 起動オプションをつけてChromeをコマンドから起動する
    open -a "/Applications/Google Chrome.app" --args --save-page-as-mhtml
Windows OS

  1. Chromeを終了する
  2. Chromeアイコンで右クリックし「プロパティ」を選択
  3. 下図の「ターゲット」の部分の末尾に「  --save-page-as-mhtml」を追加する
  4. 保存する
  5. ChromeアイコンからChromeを起動する

2019年7月5日 @kimipooh

2019年6月17日月曜日

【Windows専用】Google Drive File Stream のキャッシュフォルダをクリアするバッチファイル

Google Drive File Steamを仕事で利用することが多くなり、時々同期に失敗して初期化(アプリを終了 > キャッシュフォルダの名前変更 > アプリの起動)する必要が生じます。台数が多いと、結構手間です。そのため、それを自動でやってくれるバッチファイルを作成してみました。


に公開しています。GitHUB で基本的なことを説明してます。ここでは図を使って補足説明をします。

注意点


キャッシュフォルダ:%LOCALAPPDATA%\Google\DriveFS

Google Drive File Stream 上の Google Driveフォルダに保存する場合、

1. 端末のキャッシュフォルダにデータを一旦保存して
2. キャッシュフォルダに保存したデータを Googleドライブと同期
3. キャッシュフォルダに保存したデータを削除

の動作をしているようです。

問題ない事例


Google Drive(https://drive.google.com)に同期できているのに、他の端末では表示されない場合には Google Drive File Stream のキャッシュフォルダ内データがおかしくなっている可能性があります。そのため、キャッシュフォルダを削除することで直る場合があります。

データが消えてしまう可能性のある事例


端末上は Google Drive に入っているはずなのに、Google Drive(https://drive.google.com)をみると存在しない場合には、同期がうまくいっていません。その場合には、キャッシュフォルダにデータが入ったままになっています。
その状態でキャッシュフォルダを削除するとデータが消えてしまう恐れがあります。

そのためこのバッチファイルはキャッシュフォルダの名前変更はしますが、キャッシュフォルダそのものは削除しません。様々な状況が考えられるためです。

このバッチファイルは、なにをしているのか


キャッシュフォルダ:%LOCALAPPDATA%\Google\DriveFS

  1. Google Drive File Stream ソフトを強制終了
     *2秒待ちます。まだソフトが終了しきれていない場合があり、 2 のフォルダの名前変更が失敗するケースがあったためです。
  2. キャッシュフォルダの名前変更(DriveFSをDriveFS2へ) *もし名前変更した DriveFS2が存在すれば、先にそれを別の場所に移動するか削除するように警告メッセージを出して終了します。そして、下図のようにキャッシュフォルダの存在するフォルダを開きます。
  3. Google Drive File Streamを起動します。
     *コマンドプロンプトは、そのまま閉じるか、何かキーを押すと閉じます。

うまくいった場合のメッセージ


下図のように、ソフトを終了し、名前変更し、起動します。

 

タスクバーに Google Drive File Streamアイコンが複数出てしまった場合




のように複数出てしまった場合、実際には終了していますがアイコンとして消えるのが遅れている状態です。アイコンのところにマウスポインターを合わせると勝手に消えて、


のように1つになるでしょう。

2019年6月17日 @kimipooh

2019年6月7日金曜日

Google Product Experts Sydney Meetup 2019 に参加するぜ! #google-pe-meetup

Google ヘルプコミュニティに関する Google イベント、今年私が招待されたのは Google  シドニーオフィス(オーストラリア)です!シドニーのGoogleオフィスは、かなり大きいとか。楽しみですね! 場所は、ビルモント湾を眺めることができる位置(Google Mapへのリンク)で、周りの見どころも多そうです!

関連情報




シドニーまでのフライト


筆者は関西国際空港(関空)出発になります。
エージェントによると、
  • 関空 - 羽田、羽田 - シドニー
  • 関空 - Changi(シンガポール)、Changi - シドニー
の2パターンを提示してきました。関空でも2日に1度 カンタス航空が直行便だしているようですが、私の日程上はそれを使えず。
提示されたものをみると、いずれも前日出発、当日の朝につくという感じですね。羽田からシドニーへの直行便が 22時しかないのが痛いなぁ。

まぁこの条件なら羽田経由かなぁと思っています。

ビザ必要(ETAS)


通常申請では1週間ほどかかること。旅行代理店によっては提示を求められることもありうるので早めにとっておくのがよいと思います。私の場合には求められました。

Google Product Experts ってなんだろう?


ところで、 Google Product Experts ってなんでしょうか。あまり知られていないかもしれません。

  • Google 製品に関して、Google公式のコミュニティ(Twitter上の Help on Social か、Google ヘルプコミュニティのいずれか)を通じて困っている質問者をサポートすることに情熱を持っている人たち
のうち、
  • その活躍が Googleによって認められて称号(各製品ごとにシルバー、ゴールド、プラチナがある)を付与されたユーザーの総称です。
ただし、いくつかのビジネス用製品については別枠になっている場合もあります。

筆者は、Gmail、Chrome のプラチナ プロダクトエキスパートです。
加えて、G Suite(日本語) もエキスパートになっています。

少なくてもゴールド以上になると、Google の各種イベントに招待されることでしょう。
筆者が招待されたイベントの紹介は、
のほうでまとめています。これまで東京オフィス、Google本社(アメリカ)、シンガポールオフィス(シンガポール)と訪れ、今年はシドニーオフィス(オーストラリア)に行く予定です。費用は基本的に Google 持ちで、様々な人たちと交流し、話を聞き、その国に触れてとても刺激的な体験をすることができました。

なお、それぞれのエキスパートについては、エキスパートの方がブログで紹介されている
を参考にするのがわかりやすいかなと思います。

また 各製品の日本語に関するGoogle 公式コミュニティは、
にまとめています。

Google Product Experts にどうやってなるの?


Google公式のコミュニティ(Twitter上の Help on Social か、Google ヘルプコミュニティのいずれか)上の質問に対して、回答してみてください!

そうすれば、シルバープロダクトエキスパートの候補になります。
あとは Googleヘルプコミュニティコンテンツポリシーをよく読み、回答を続けていくとシルバーの称号を得る可能性が高まります。ようするに困っている質問者を真摯に助けていくとよいということです。

シルバーになり、さらに質の高い回答を提供し続けていけば、その先にはゴールドへの道が自然とひらけてくると思います。ゴールドになれば、まだ世の中に出ていない Google製品を事前にテストする機会を得ることもできますよ!

なぜ Google Product Experts になろうと思ったの?動機は?


筆者の場合には、仕事で G Suite (旧 Google Apps)という Gmailや Googleカレンダー等を統合的に使えるクラウドサービスを管理運用する必要が出てきたためです。管理運用をするためには、そのサービスについて詳しく知っていないと駄目ですよね。

この経緯については
の筆者の旧ブログで公開しています。
Google Top Contributor とは、 2018年10月に Google Product Experts にリニューアルされる前の名称になります。

なお、筆者は Googleに限らず、他のプロダクトでも同様に、自身が管理運用する場合にはそのコミュニティに入って勉強し、そこで得た知識を共有してきました(最近では、Quora, Google, WordPressの3つが主な活動場所になってます)。その一環として Google 製品でも同じことをしたということです。

回答することで、その製品についてより詳しくなっていきます。もし Google の何らかの製品を使っていて、それについて少し人よりも詳しいと思うなら、是非コミュニティで回答してみてください!そしていずれどこかの Googleオフィスでお会いしましょう!(私がそれまでエキスパートでいられればですけどね (^^;)

2019年6月7日 @kimipooh

Redmineのアップグレード(3.4→4.0)とGoogle認証プラグイン

そろそろ 4.0系にアップグレードするかぁと思ってやってみました。
今回はメジャーバージョンアップになります。

関連情報





3.3から3.4系にしたときには特に目新しいものはなかったので、Redmine に関するブログを書くのは久しぶりです。なお 3.4 にしたときに、Google認証プラグイン「redmine_omniauth_google」が動作しなくなっていました。
しかし今回、
というオリジナルをフォークした「redmine_omniauth_google」プラグインを使わせていただき、動くようになりました。

アップグレード


インストール場所:/usr/local/redmime-svn/4.0-stable
Nginxで指定する場所:/usr/local/redmine-svn/redmine (/usr/local/redmime-svn/4.0-stable へのシンボリックリンク)
データベース:redmine34 --> redmine40 への移行

とすると仮定します。

Step 1. Redmine のダウンロード


cd /usr/local/redmine-svn
svn co https://svn.redmine.org/redmine/branches/4.0-stable/

これで 4.0-stable フォルダができます。

Step 2. 設定のコピーと編集


cd /usr/local/redmine-svn/4.0-stable
cp -p  ../3.4-stable/config/database.yml   config/
cp -p  ../3.4-stable/config/configuration.yml   config/
cp -p  ../3.4-stable/config/unicorn.rb    config/

config/database.yml の編集(1箇所)

データベースとして、
database:redmine34
database:redmine40

Step 3. データベースのコピー


phpmyadmin 等で redmine34 のデータベースをエクスポートし、redmine40 というデータベースを新規作成した上で、そこにインポートする。

redmine34 と異なるユーザーに権限を渡した場合には、上記 database.yml のユーザーとパスワードのデータを変更すること。

Step 4. ファイルとフォルダのコピー


cd /usr/local/redmine-svn/4.0-stable
rm -rf files
cp -rp ../3.4-stable/files 

Step 5. Google Auth プラグイン「redmine_omniauth_google」のインストール


cd /usr/local/redmine-svn/4.0-stable
cd plugins
git clone https://github.com/yamamanx/redmine_omniauth_google.git
bundle install

※ bundle install で警告やエラーがでたが、とりあえずそのまま進む。

Step 6. 必要なツール類のインストール(Unicorn等)


cd /usr/local/redmine-svn/4.0-stable
gem install bundler --no-rdoc --no-ri
echo 'gem "unicorn"' >> Gemfile
bundle update
bundle exec rake generate_secret_token
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Step 7. A1 テーマのインストールと設定移行


以前から A1テーマを使っていたので、その最新版を入れることにする。
ダウンロードしたものについて

/usr/local/redmine-svn/4.0-stable/public/themes/

に展開する(a1フォルダを入れる)。

/usr/local/redmine-svn/4.0-stable/public/themes/a1/

に入るはず。
以前の a1 テーマにカスタム設定したスタイルシートを移行しておく

cd /usr/local/redmine-svn/4.0-stable
cp -p  ../3.4-stable/public/themes/a1/stylesheets/application.css   public/themes/a1/stylesheets/

どういうカスタマイズをしたかというと

優先度
 今すぐ:紫
 急いで:赤
 高め:オレンジ
 通常と低い:灰色・白
※ただし終了したものは、通常と同じ背景にした上で、文字は青。

という感じ。

Step 8. Redmine を止めて移行する


まずは動作している Redmine 3.4系を停止します。

/etc/init.d/unicorn stop

unicorn のプロセスが残っていたら個別に kill してください。
残っていたら、移行後に redmine 4.0 用の unicornが起動できません。

cd /usr/local/redmine-svn/
rm redmine
ln -s 4.0-stable  redmine

として
/usr/local/redmine-svn/redmine (シンボリックリンク)の実体を
 3.4-stable から 4.0-stable フォルダに切り替えます。

/etc/init.d/unicorn start

で起動すればOK.

STEP 9. Google 認証でログインできるようにする


管理者で Redmine にログインし、「管理 > プラグイン」より、「redmine_omniauth_google」プラグインの設定を行います。

設定に関しては
を参考にしてみてください。
基本的に
  • Client ID: Google Developer Console で発行
  • Client Secret: Google Developer Console で発行 
  • Available domains: 無料版 Gmailなら gmail.com、G Suiteならそれぞれのドメインを入れる感じ。
  • Oauth authentiffication: オンにする
になるはずです。

またプラグインの各種設定については

を参考にしてみるとよいでしょう。

実際にログアウトして、Google 認証ボタン(Login via Google)を押して、Googleログイン画面が出てきて、そこにログインすることで Redmine に登録したユーザー(メールアドレス)でログインできたらOKですね。



ということで Redmine 4.0.3(2019-06-07時点)が入ったのでした。
今回 Redmine の新機能をみると、##チケットID でチケットのタイトルが入ってくれるのは大きいなと思いました。

2019年6月7日 @kimipooh

2019年5月17日金曜日

【G Suite専用】 Google Drive File Stream for Mac で同期できない、アカウントが停止する場合

自分が遭遇して解決するのに苦労したので備忘録としてまとめます。


基本的な対応


  1. システム環境設定 > セキュリティ にて、Google, Inc. に対して「許可」があれば許可する
  2. Google Drive ファイルストリームアプリを終了し、 $HOME/Library/Application Support/Google/DriveFS フォルダをリネームし、アプリを起動する(初期化)
  3. セキュリティ対策ソフトをオフにしてアプリを終了、起動しなおしてみる
    *解決するなら、セキュリティソフトのリアルタイムスキャンに対して
     /Volumes/GoogleDrive/
     /Users/{username}/Google Drive File Stream/
    の2つのフォルダを除外設定する
  4. ターミナルなら「sudo spctl --master-disable」をして、アプリ制限をなくしてアプリを終了、起動しなおしてみる
    *あとで、 sudo spctl --master-enable で設定をもとに戻しておく


までは


あたりにまとめて掲載していますし、他のサイトにも掲載されています。

Google Drive ファイルストリームのネットワーク設定を確認(プロキシ設定)


もしこれでも解決できない場合には、Google Drive ファイルストリームのプロキシ設定の問題かもしれません。筆者は

  • 同期が終わらない
  • DriveFSフォルダを削除すると、ログイン後にアプリが停止する
  • 他のアカウントでログインしようとしたら、プロキシ設定を見直せと警告がでる
という状況あったので、下記のように、設定 > ネットワーク設定のプロキシ設定を変更することであっさり解決できました。



 



2019年5月17日 @kimipooh

2019年5月6日月曜日

GmailのフィルタをCUI ツールで管理してみよう!

大量の Gmailのフィルタをどのように管理していますか。数十程度なら Gmail設定のフィルタから直接管理するほうが早いと思います。でも百を超えてきたら無理っぽい気がします。ではどういう方法があるのでしょうか。

  1. エクスポートしたフィルタデータ(XML)を編集して、インポートする
  2. Gmail APIを利用してフィルタを管理する
  3. ツール側で管理したフィルタ設定を Gmailにインポート(追加)する

あたりが考えられます。
「1」の方法は、エクスポートした XMLファイルをテキストエディタなどで開いて、直接編集することもできます。構造さえ理解できれば、下手なツールをつかうより直接編集したほうが早いだろうと思います。

「2」の方法については、Managing Filters (Gmail API) にあるGoolge Developer ガイドを使って直接プログラミングをするか、何らかのツールをつかうことになると思います。そのツールは少し探した程度では見つけられませんでした。

「3」の方法については、 gmail-yaml-filters が便利かなと思います。

ということで管理といっても、「3」の部分的なものになりますが、その紹介をしてみたいと思います。なお gmail-yaml-filters は プログラミング言語 Python を使ったツールになります。そのため、そこも含めた紹介をします。

参考GUI to manage Gmail filters? (Stackoverflow)

*環境:macOS 10.14.4 

STEP 1.  gmail-yaml-filters (GitHUB) を使えるようにする


1. Python3をインストールする


macOS 10.14 には、python 2.7 系が入っていますが、最近の主流は 3.x 系のため、そちらを使うことにします。

  1. https://www.python.org/downloads/ より macOS 用インストーラーをダウンロードしてインストール。
    ※ 2019年5月6日時点で、Python 3.7.3 が最新版です。
  2. ターミナルを起動して、
      python3 -V 
    コマンドにて、3.7.3 と出てきたらインストール成功しています。

2. pip コマンドへのPATHを通す


pip は、 Python に付随(2.7.9以上、3.4以上)していますが、PATHが通っていません。
macOS であれば

/Library/Frameworks/Python.framework/Versions/3.7/bin

に対するPATHを設定する必要があります。
今回は pip コマンドしか使わないので、すでにPATHが通っているはずの /usr/local/bin へ pip のシンボリックリンクを置くことで代用します。

ターミナルより(以下、一行で書く)
  • ln -s  /Library/Frameworks/Python.framework/Versions/3.7/bin/pip /usr/local/bin/pip
とすると /usr/local/bin/php に本体「 /Library/Frameworks/Python.framework/Versions/3.7/bin/pip」のシンボリックリンクが作成されます。ので /usr/local/bin/ にPATHが通っていれば 
  • pip -V
    pip 19.1 from /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pip (python 3.7)

のように pip コマンドが使えるはずです。

3. gmail-yaml-filters (GitHUB) をインストールする


ターミナルより

  • pip install gmail-yaml-filters

STEP 2. gmail-yaml-filters 用の設定ファイルを作成する


gmail-yaml-filters  の Sample Configuration を参考に作成してみてください。
ここでは my-filters.yaml ファイルに保存することにします。なおタブは使ったらエラーになるので注意。

例1)差出人が hogehoge@sample.com かつ 添付ファイルを含む場合、「Sample」ラベルを付与する
-
  from: hogehoge@sample.com
  match: "has:attachement"
  label: Sample

例2)差出人が、 hogehogeA@sample.com 以外、または hogehogeB@sample.com  以外の場合、「Sample2」ラベルを付与する。
-
  from: 
    any: [-hogehogeA@sample.com,-hogehogeB@sample.com]
    label: Sample2

例3)差出人が、hogehogeA@sample.com、 hogehogeB@sample.com以外の場合、「Sample3」ラベルを付与する。
-
  from: 
    all: [-hogehogeA@sample.com,-hogehogeB@sample.com]
    label: Sample3

*これについては次の書き方もできる
-
  from:
    any:
        -hogehogeA@sample.com
        -hogehogeB@sample.com
  label: Sample3

あるいは

-
  from:  -hogehogeA@sample.com   -hogehogeB@sample.com
  label: Sample3

例1)2)3)をまとめると
my-filters.yaml の中身は次のようになります。
-
  from: hogehoge@sample.com
  match: "has:attachment"
  label: Sample
-
  from: 
    any: [-hogehogeA@sample.com,-hogehogeB@sample.com]
  label: Sample2
-
  from: 
    any:
        -hogehogeA@sample.com
        -hogehogeB@sample.com
  label: Sample3

となります。

STEP 3. Gmailにインポートする


1. Gmailで利用可能な XMLファイルに変換します。


  • gmail-yaml-filters my-filters.yaml  > my-filters.xml

とします。これで


にあるようなXMLファイルがコマンドを実行した場所にできるはずです。
※今回の例の場合、/Users/ユーザー名/ 以下にあるはずです。つまりユーザーのホームディレクトリのところにあるはず。(Macintosh HD > ユーザー > ユーザー名)

2. 既存のフィルタをバックアップします。


念の為、かならずバックアップしておきましょう。


にあるように、Gmailのフィルタ設定で、フィルタをすべて選択して「エクスポート」ボタンを押します。

3. 変換した my-filters.xml をインポート(追加)


1. Gmailのフィルタ設定にある「フィルタをインポート」リンクをクリックします。


2. my-filters.xml を選択すると、下記のようにファイルが選択されます。「ファイルを開く」ボタンをクリックします。

3. すると my-filters.xml に設定したフィルタが出てきます。意図したフィルタになっていることを確認します。確認できたら「フィルタを作成」ボタンをクリックします。

4. 下記のようにフィルタが追加されていることを確認します。



すでにあるものは管理できませんが、このように比較的わかりやすい文法で新たに書き直すことで大量フィルタの管理しやすいかもしれませんね。

2019年5月6日 @kimipooh

2019年4月23日火曜日

【G Suite】GAM でGoogleグループへのメンバー一括登録方法(macOS編)

過去に、Google Apps Manager (GAM) を使っていろいろやろう にて触りの部分は書いていましたが、少し本格的に使わないといけなくなったので改めてまとめます。Google グループの一括作成方法については

を見ればわかると思いますので、ここでは一括登録のみに特化します。

なお一括登録前にバックアップ、すなわち現在登録済みのメンバー一覧のエクスポートから説明しておきます。

なお以下は、G Suite 専用であり、G Suite 管理コンソールにログイン可能な特権管理者向けのドキュメントとして残しておこうと思ってまとめたものです。

  • 前半:すでにインストールした状態での利用方法
  • 後半:macOSへのGAMのインストール方法

グループのメンバー一覧エクスポート


1.  GAMを使った場合


グループ名:sample-ml
MLメールアドレス:sample-ml@example.com 

と仮定します。

gam  info  group  sample-ml
....
....
 member: メールアドレスA (user)
 member: メールアドレスB (user)
 member: メールアドレスC (user)
 member: メールアドレスD (user)
 member: メールアドレスE (user)
 owner: メールアドレスF (user)
 manager: メールアドレスG (user)

のように出てきます。したがって
  • gam  info  group  sample-ml  > sample-ml-back.dump
とかファイルに出力すれば、グループの設定やメンバー(オーナーやマネージャーもわかる)を取得できます。

さらにメンバーが何名登録されているかが末尾に出力されます。

2. Googleグループの管理画面よりエクスポート



上記のように、Googleグループのメンバー一覧表示のバーに「メンバーをエクスポート」があります。もちろん管理権限を持っている必要があります。

これでエクスポートすると BOM無しUTF-8のCSVファイルで保存されます。
これを Microsoft Excel で開くと文字化けします。文字化けしたくないなら、BOMありのUTF-8に文字コード変換してあげてください。

macOS であれば、CotEditor というテキストエディタで開いて


のように文字コードを BOM付きにして上書き保存したらよいでしょう。
こちらはステータス(配送エラー等)がわかるので、便利です。

Googleグループへのメンバー登録


  • gam  update group  グループ名  add member  メールアドレス

もし Word等で一行一メールでメールデータを大量にもらったのなら、それを一旦テキストファイルに保存し直した上で
  • cat  ファイル名  | awk  '{print "gam update group グループ名  add member "$1}' 
にて正しくコマンド一覧ができているか確認した上で、
  • cat  ファイル名  | awk  '{print "gam update group グループ名  add member "$1}'  | bash
で一括登録できます。実際には出力結果をリダイレクトしてファイルに保存しておくことをオススメします。
  • cat  ファイル名  | awk  '{print "gam update group グループ名  add member "$1}'  | bash  >  グループ名.log 
あたりでしょうか。

登録成功
+ ./gam update group グループ名 add member メールアドレス
 Group: グループメールアドレス, メールアドレス Add as MEMBER 

すでに登録済みのため追加しない
+ ./gam update group グループ名 add member メールアドレス
 Group: グループメールアドレス, メールアドレス Add as MEMBER Failed: Duplicate, already a MEMBER

と出てくるので、

追加を試みたメールアドレス数
grep -v '+'  グループ名.log  | wc

すでに登録済みだったメールアドレス数
grep -v '+'  グループ名.log  | grep Duplicate | wc

などをすると、登録状況がわかるかなと思います。
このあたりはコマンドでいろいろできる人なら、いろいろできるでしょう。

注意!


必ず作業する前にバックアップをしておきましょう。
万が一ミスっても、バックアップしておけば戻せますよね(最悪メンバー一覧情報があれば)
  • gam info group グループ名 > バックアップファイル名


GAM を macOS にインストール



まず最初に注意ですが、gam はコマンドラインで G Suite を直接管理するためのものです。つまり G Suite の特権管理者がメンバーの一括登録をしたいときなどにつかうだろうと思いますので失敗したら Googleグループをあっさり削除してしまったり、ユーザーを削除してしまう事がありうるということです。そのことを正しく認識した上で使ってください。つまりコマンド操作に不慣れな人は使わないほうがよいということです。

また、つかうとき以外は機能OFFにすると安心かもしれません。
  • G Suite管理コンソール > セキュリティ  > API アクセス が ON
になっていることが条件になり、ここを普段 OFF にしているとアクセスを遮断できます。
なおここがOFFになっていると

  • ERROR: 403: Domain cannot use apis. - domainCannotUseApis

のようにエラーがでます。

1. gam を macOS にインストール

bash <(curl -s -S -L https://git.io/install-gam)

Can you run a full browser on this machine? (usually Y for MacOS, N for Linux if you SSH into this machine) N

*これ Yにすると、ブラウザベースで認証をしようとしますが、 localhost:8080 にアクセスできず(いろいろしましたが)、結局 ssh のほうにしました。

Please enter your G Suite admin email address: 特権管理者のメールアドレス
Go to the following link in your browser:
URL
Enter verification code: URLにアクセスし出てきた codeを貼り付ける
が出てくるので、URLにブラウザからアクセスして、特権管理者のメールアドレスでログインします。そうすれば、verification codeが出てくるので、これをコピーして貼り付けます。

次に

https://console.developers.google.com/apis/credentials?project=gam-project-****
1. Click the blue "Create credentials" button. Choose "OAuth client ID".
2. Click the blue "Configure consent screen" button. Enter "GAM" for "Application name".
3. Leave other fields blank. Click "Save" button.
3. Choose "Other". Enter a desired value for "Name". Click the blue "Create" button.
4. Copy your "client ID" value.

というのが出てくるので、支持に従って Google Developer Console にて GAM用のプロジェクトを作成して、クライアントIDクライアントSecretキーを取得してください。このあたりの詳細は説明しません。これができないレベルだと、使うのは危ないためです。

あといくつかの質問がありますが、割愛します。
どのAPIに許可を与えるのか等、個別に考える内容のためです。とりあえず今回は Googleグループに対する権限があればよいです。

でうまく行けば、

GAM installation and setup complete!
Please restart your terminal shell or to get started right away run:
gam() { "/Users/ユーザー/bin/gam/gam" "$@" ; }

に入ります。
$HOME/bin/gam あたりに PATHを通しておくか、直接 gam を実行すればよいでしょう。

GAM が使えるかの確認


$HOME/bin/gam/gam info domain 

として、G Suite のドメイン情報が出てきたらアクセスできていることになります。

なお以下、説明時に $HOME/bin/gam/gam は gam に置き換えます。

またコマンド詳細
  • $HOME/bin/gam/GamCommands.txt
にすごく見づらいですが載っていますのでここを見ればよいです。

2019年4月23日 @kimipooh