2020年1月30日木曜日

Google Chrome のアドレスバーの検索エンジンの検索地域を US に変更する方法

アドレスバーで使用される検索エンジンを米国に変える(Google Chromeヘルプコミュニティ)で質問があったので試してみました。少しやり方を文字だけで伝えるのは難しいので、ブログでまとめてみます。

まず
のように他にも便利な方法があるので、どの方法が自分にあうのかチェックしてみるとよいです。

さて順を追って説明します。

STEP 1. 既定の検索エンジンのクエリURLをコピー(メモ)する


Chrome設定  > 検索エンジンを開きます。



すると上記のように「既定の検索エンジン」の画面が出てきます。
このうち、Googleの検索エンジン設定(赤枠)をみてください。

この一番右にある縦・・・ をクリックし、「編集」を選択します。


そして、URLの文字を選択してコピーします。

 STEP 2. 検索エンジンを追加する


下図のように「その他の検索エンジン」にある「追加」ボタンをクリックする。


次の各項目に必要な情報を入力してください。
  • 検索エンジン:適当(分かる名前ならよい)
  • キーワード:適当(わかるキーワードならよい)
  • URL:
     先程コピーした Google(既定)のURLをペーストした上で、
     search?q=%s の ? と q の間に、 gl=en& を挿入してください。
     結果として、search?gl=en&q=%s... のように続いていくことになります。



そして追加ボタンを押すと、「その他の検索エンジン」に追加されます。
追加された検索エンジンの右側の縦・・・をクリックして「デフォルトに設定」を選択します。



すると、下図のように追加した検索エンジンが既定になったはずです。



これで検索すると検索地域が米国として検索されるはずです。
もしUI部分も英語にしたければ、gl=en& のところを、gl=en&hl=en& にすればよいです。

なにげに地域限定で検索できるのは便利ですので、少し詳細にメモっておきました。

2020年1月30日 @kimipooh

【G Suite専用】基本デバイス管理機能でパソコンの基本管理が容易に!

2019年11月9日の基本デバイス管理機能で、あらゆるデスクトップ パソコンの基本的な管理が可能に(G Suite アップデートブログ)を今更ながらみて、おおーそんな機能があるんだーと思ったのでした。
  • G Suite管理コンソール > デバイス > エンドポイントの確認
よりデータを確認できます。

OSの種別や最初の同期、最終同期、端末のメーカー名や型番、シリアル番号、Google Drive File Stream の同期情報などが分かりますね。
どこまでわかるかは
に書いてある情報かなと思います。

なぜ Endpoint Verification を入れずに収集できるのか


という疑問が生じます。G Suite アカウントにログインしたら、そこから収集できるのか。いやいや、それだけでは端末の型番は取得できないはず。どうやっているのだろう、またどのようなタイミングで収集されるのだろうという疑問も生じます。

すべての端末の情報が収集されていない


これも疑問です。単にG Suite にログインしたからと言って収集されるわけじゃなさそうです。もちちろ明示的に Endpoint Verification ソフトをいれたら収集されるのでしょうが、それは入っていません。

どうやら Google Drive File Streamをいれてログイン(同期)すると出てくるようだ


実際にいくつかチェックすると、Google Drive File Stream ソフトを端末にいれて、ログイン(同期)したら、即座に管理デバイスとして管理コンソール上に出てきたので、これがトリガーになっているのだろうと思います。
確かに出てくる端末には、このソフトをいれてますしね!

追記(2020-02-04)


デバイス情報を収集するトリガーについて(G Suite Adminitrator Community)において、質問者さんがサポートに聞いた結果が、まさにこの Google Drive File Stream がトリガーになるということでした!


組織的なアカウントをどの端末にいれたのか、少なくてもGoogleドライブを使っている端末がわかるはセキュリティ的に便利だなと思いました!


2020年1月30日 @kimipooh




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 対応のアプリへ切り替える必要があります。

具体的な影響例


G Suite 管理者宛に通知された内容からは
  1. Outlook 2016 あるいはそれ以前のバージョン
  2. Thunderbird やそれ以外の電子メールソフトの場合、IMAP + OAuth 認証設定に切り替えること
  3. iOS, MacOSのメールアプリの場合、一度アカウントを削除して再登録が必要
  4. CalDAV を使ってカレンダーアプリは、OAuthに対応する必要があり。
  5. iOS, macOS のカレンダー(Apple純正)をつかう場合には、一度アカウントを削除して再登録が必要
もちろん開発者も OAuth2 に対応無いといけないのですよね。これって2段階認証+固有のパスワードでもだめだってことでしょうねぇ。

Outlook 2016あるいはそれ以前のバージョンは、Outlook 2019以降を勧めたらよいのでまだいいんですけど、Thunderbird や他の電子メールソフトで、POP3受信ができなくなるってのが痛いですね。うーん、うーん、困った。POP3受信の場合には、OAuth2認証ができないんですよね、なので 全員 IMAPに切り替えるしかないのかぁ。Becky! Internet Mail もだめですねぇ。

というように電子メールソフトやアプリで特に大きな影響でそうです。

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

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


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


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

これは痛い。私も送信サーバーのない外部Webサーバーをいくつか使っており、送信にはプラグインで G Suite のGoogleアカウントを使って Gmail のSMTPサーバーを使っているのですよね。これが使えなくなると。。。まぁ DNSのMXレコードを変更してオンプレミスのSMTPサーバーを使ってもいいんですけど、オンプレミスのSMTPサーバーはできれば廃止したいなぁと思っているのですよね、、うーん。

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

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

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