Google ドライブから SharePoint・OneDrive への移行|移行マネージャーで移らないものと、移す前に直すもの
Google ドライブを Microsoft 365 に移すとき、移行マネージャーはマイドライブを各人の OneDrive へ、共有ドライブを SharePoint のサイトへコピーします。ただし社外との共有リンク、ショートカット、孤立したファイルは移らず、古い版やファイル単位の権限は設定が要ります。権限の対応、パスの長さの数え方、移す前に直すもの、切り替えの手順を、スキャンのレポートで確かめる順に説明します。
目次 クリックで開く
この記事の要点
- 移行マネージャーで、マイドライブは各人の OneDrive へ、共有ドライブは SharePoint のサイト(または Teams のチャネル)へ、フォルダーの権限ごとコピーできます。Google ドキュメント・スプレッドシート・スライドは Word・Excel・PowerPoint の形式に変わります。
- 「完了」と表示されても移っていないものがあります。多くは詳細レポートの ResultCode に出ますが、孤立したファイルはレポートに出ず、社外との共有は作り直されません。孤立したファイルは
is:unorganized、社外の相手を指定した共有はsharedwith:externalの検索で先に見つけます(リンクで公開したものは別に確かめます)。 - 移行先は初回の移行のあとは変えられません。本番の前に試し用の移行先へ1タスク移し、パスの長さやコメントの扱いを詳細レポートと実物で確かめてから日程を決めます。
Google ドライブのファイルは、移行マネージャー(Migration Manager)で、マイドライブを各人の OneDrive へ、共有ドライブを SharePoint のサイトへコピーできます。手間がかかるのは、移らないものを移す前に見つけて、Google 側で直す作業です。
移行マネージャーは、サポートされないファイルが移らなくても「完了」と表示し、親フォルダーの無いファイルはレポートにも載せません。その移っていないものをどこで見つけるかを、移行を担当する方に向けて書きます。
当社は Google Workspace と Microsoft 365 の導入・移行を支援しています。内容は2026年10月に Microsoft と Google の公式の説明と、当社の試用環境の移行マネージャーの画面(Google に接続する手前まで)で確かめました。全体像は乗り換えの記事にあります。
始める前に決めること:権限を持つ人と、標準か Lite か
移行マネージャーの Google ドライブの画面は、Microsoft 365 管理センターの左のメニューで[Setup](日本語の画面でも英語の表記でした)→[移行リソース]を開き、「移行ツールとインポート ツールを見る」を押して[Google Workspace]を選び、「Google ドライブ の移行」の[使用を開始する]を押すと開きます。SharePoint 管理センターの[移行]にある Google Workspace の[開始]からも、同じ画面が開きます。移行元に Google Workspace を選ぶと、Google ドライブのファイル、メタデータ、アクセス許可を OneDrive と SharePoint にコピーします(Microsoft Learn)。進め方は、Google への接続、スキャンと評価、移行の一覧へのコピー、移行先の確認、ID の対応付け(画面では[ID をマップする])、移行と監視の6段です。この記事の画面の写真は、2026年10月時点の当社の Microsoft 365 試用環境(ライセンス1)で、Google に接続する手前まで撮ったものです。接続したあとの画面(スキャン、ID の対応付けの中身、タスクの追加)は撮っておらず、その部分は Learn の説明によります。
作業には、両方のサービスの管理者が要ります。Microsoft 365 側は、OneDrive/SharePoint 管理者、移行管理者のロールを付けた利用者、グローバル管理者のいずれかで、できるだけ権限の少ないロールを使います。Google 側では、Microsoft 365 移行アプリを Google Workspace Marketplace から組織全体に入れて承認します。組織全体に入れるには Google の特権管理者が必要です(手順 1: Google Workspace に接続する)。接続の操作は、10分何もしないと切れます。
次に、自社がどちらの移行マネージャーになるかを確かめます。Learn の説明では、Microsoft 365 のライセンスが300未満のテナントでは、移行プロジェクトを作ると簡略版の「移行マネージャー Lite」が既定になります。Lite では、スキャンと評価や移行先の確認が独立した段として出ず、Google につないだあとのウィザードで、移すドライブ、移行先、ID の対応付け、移行の設定を続けて決め、ウィザードを終えると選んだドライブの移行が自動で始まります。ウィザードのあとは、メインの画面から移行のレポートを落としたり、新しいタスクを足したりできます。
当社の試用環境(ライセンス1)では、Google に接続する前の画面に「Lite」や「簡略版」の表示は無く、[タスクを追加する][ID をマップする][移行]のボタンと、4つのタブのプロジェクト設定がある形でした。Learn では Lite のウィザードは Google に接続したときに開くとされており、当社は接続していないので、ウィザードが出るかは確かめていません。
Learn の説明どおり Lite のウィザードになる場合は、スキャンのレポートを見て直してから移す、という順番がとれません。当社は Lite の会社には次の進め方を勧めます。移行前の一覧は Google 側の情報(管理コンソールのアイテム数、利用者による検索)で作り、ウィザードでは試し用のドライブだけを選んで試し用の移行先へ移します。その詳細レポートで、パスがどちらの形で数えられるかを確かめて名前を短くする基準を決め、本番のドライブはメインの画面からタスクとして足します。ただし、本番の各ドライブの長すぎるパスや親と違う共有の数を、移す前に項目ごとに出す方法は、Lite については Learn に書かれていません。本番のドライブの長すぎるパスは、本番の移行のあとに詳細レポートの MITEMPATHLENGTH で見つけ、ファイル名だけを短くして差分の移行で移します(あとの「長すぎたときの直し方」)。
移行先:マイドライブは各人の OneDrive、共有ドライブはサイトのライブラリ
移行マネージャーは、移行の単位を「タスク」と呼びます。Google のドライブ1つが1行で、マイドライブは利用者ごと、共有ドライブはドライブごとのタスクになります。移行先は次の形で指定します(手順 4: 宛先を確認する)。
| 移行先 | 指定のしかた | 例(公式の例の形) |
|---|---|---|
| SharePoint | サイトの URL +ライブラリ(中のフォルダーも可) | https://contoso.sharepoint.com/sites/eigyo/Shared Documents |
| OneDrive | その利用者のメールアドレス(UPN)か、OneDrive の URL | user@contoso.onmicrosoft.com |
| Teams | チームとチャネルを選ぶ | — |
OneDrive を移行先にするときは、移行の前に各人の OneDrive を用意しておきます。用意されていない移行先は検証で失敗し、移行も失敗します。当社の試用環境のプロジェクト設定の[詳細設定]には「OneDrive の宛先の自動プロビジョニング」があり、既定はオフでした。有効にしない場合は移行管理者が事前に用意する必要がある、と画面に書かれています(Learn は、Lite の対象のプロジェクトで代わりに用意できる場合があると説明しています)。移行先の選択肢に出てこないサイトは、CSV で移行先をまとめて登録できます。そして、いったん移行を始めた移行先は、あとから変えられません。
大きなドライブは分けます。1つのタスクは10万アイテムか1TB を超えないようにし、大きなドライブはルートのフォルダーごとの小さなタスクに分けます(手順 2: スキャンと評価)。Google の共有ドライブには50万アイテムまで入るので(Google「共有ドライブの制限」)、上限近くまで使っている共有ドライブは1つのタスクに収まりません。Google の管理者は、管理コンソールで「共有ドライブの管理」を検索し、[アイテムの上限]の列で共有ドライブごとの使い具合を見られます。フォルダーごとのタスクは、ドライブのルートに直接置かれたファイルを含まないので、ルート直下のファイルの移し先も決めておきます。
分けたタスクは CSV で登録します。移行元の書き方は、マイドライブが 利用者のメールアドレス か 利用者のメールアドレス/フォルダー名、共有ドライブが /共有ドライブ名 です(CSV ソースパスの書式)。Learn の分け方の例はマイドライブのもので、共有ドライブをフォルダーで分けるときの書き方は、今回確かめた説明にはありませんでした。共有ドライブを分けるときは、まず1行だけ登録して受け付けられるかを確かめてください。受け付けられなければ、当社は本番の移行を始める前に、Google 側で共有ドライブを分けてから移します(移行を始めたあとに Google 側でフォルダーを動かすと、パスが変わって重複のもとになるため)。フォルダーを新しい共有ドライブへ移し、共有ドライブごとに1タスクにする方法です。共有ドライブの間でフォルダーを動かせるのは、移動元と移動先の両方で管理者の人だけで、動かすとアクセス権が大きく変わることがあるので(Google「共有ドライブのファイルへのアクセスの仕組み」)、動かしたあとで見られる人を確かめます。
タスクを作るときの注意が3つあります。他の人のマイドライブのフォルダーに置いた自分のファイルは、自分のタスクではなく、そのフォルダーの持ち主のタスクで移ります。名前に「/」を含むドライブは移せません。同じ名前のドライブが2つあると、最初に見つかった1つしか移りません(Google 移行に関するよくある質問)。
「完了」と出ても移っていないものは、どこで見つけるか
スキャンが終わると「移行の準備完了」、移行が終わると「完了」と表示されます。ところが、サポートされない項目だけが失敗したタスクも、この表示になります(サポートされていないファイル)。さらに、親フォルダーの無い孤立したファイル(Google のヘルプでは「未整理のファイル」)は、スキャンもされず、レポートにも載りません。移行が終わったと判断する前に、移らなかった項目を確かめ、ファイルを開いて中身・版・アクセスを確かめ、移行前の一覧と移行先を照らし合わせる、という手順が Learn に書かれています(手順 6: 移行と監視)。
レポートに出るもの
レポートは、スキャンの概要、スキャンの詳細、移行の概要、移行の詳細の4種類です。スキャンの概要には、タスクごとの行を集めた ScanSummary.csv、パスが長すぎる項目の LongPath.csv、大きすぎる項目の LargeFileSize.csv などが入ります。ファイルごとの失敗の理由は、詳細レポート(TransactionItem.csv)の ResultCode の列に出ます。作ったレポートをダウンロードできるのは7日間で、レポートそのものも90日で期限が切れ、Microsoft はログを残しません。スキャンや移行のたびにダウンロードして、手元に保存しておきます(スキャンと移行のレポート)。
ファイルの大きさは、1ファイル250 GB が上限です(ファイル サイズの制限)。ただしレポートのページの表は、LargeFileSize.csv を「15 GB を超える項目」と書き、同じページの節は「250 GB を超える項目」と書いています。250 GB を超えるファイルは別の方法で移すとして、15〜250 GB のファイルが LargeFileSize.csv に出たら、試しの移行で1つ移るかを確かめます。
MEXPORTFILERESTRICTED は、ダウンロードやコピーが制限されたファイルです。原因は、ファイルの持ち主が付けた制限のほか、共有ドライブの管理者が共有ドライブ全体で「ダウンロード、コピー、印刷を許可しない」を選んでいる場合(Google「共有ドライブのファイルへのアクセスの仕組み」)や、法的な制限のこともあります。制限は意図して付けたものかもしれないので、組織全体の設定は変えません。ファイルの持ち主が付けた制限なら、持ち主に移してよいかを確かめ、認められたファイルにだけ外してもらいます。共有ドライブ全体の制限はファイルの共有設定より優先され、ファイルごとには外せないので、その共有ドライブの設定を変えてよいかを共有ドライブの管理者と決めます。外せないファイルは、移さないものとして記録します。
認証の失敗を示す MAUTHACCESSTOKENINVALID と MAUTHREFRESHTOKEN は、Learn の2つのページで書き方が逆です。レポートのページのエラーコードの表は「すべてのユーザーに対して[ドライブとドキュメント]をオン」と書き、よくある質問(2026年9月30日更新)は、このコードが出たというだけで組織全体のサービスを有効にしないよう書いています。まず移行アプリの承認が残っているかを確かめ、残っていなければ承認された管理者で Google に接続し直します(よくある質問)。次に、失敗した利用者にドライブとドキュメントが有効になっているかを見て、必要ならその利用者(その組織部門)だけを直してから、タスクをもう一度実行します。
レポートで見つけられないもの:孤立したファイルと、社外との共有
孤立したファイルは、各利用者が Google ドライブの検索で探せます。検索欄に is:unorganized owner:me と入れると、他の人のフォルダーに作った自分のファイルのうち、そのフォルダーが削除されてマイドライブに移ってきたものが出ます(Google ドライブでファイルを検索する)。見つかったファイルは、移したい場所のフォルダーに入れます。退職者など本人が探せない分は、Google の管理者が is:unorganized owner:利用者のメールアドレス で探します(管理者としてドライブ内のファイルを新しいオーナーに移管する)。
社外との共有は、移行マネージャーが作り直しません。社外の共有リンクは移行先で再作成されず、社外の協力者とも共有されません(よくある質問)。レポートで見つけられるとは書かれていないので、移す前に Google 側で一覧にします。各利用者と共有ドライブの管理者が、Google ドライブの検索欄に sharedwith:external と入れると、組織の外のユーザーやグループと明示的に共有しているアイテムが出ます(同じ検索のヘルプ)。出てきたファイルを、共有の相手と、移行先で誰が共有し直すかと一緒に、移行前の一覧に書きます。リンクを知っている全員に公開しているファイルは、相手を指定した共有ではないので、この説明には入りません。同じヘルプの例には sharedwith:public もありますが説明が無いので、試し用のファイルで出てくるかを確かめてから使います。
形を変えて移るもの、移らないもの
Google ドキュメントは .docx、スプレッドシートは .xlsx、スライドは .pptx に、移行の途中で変換されます。Google ドライブにある元のファイルはそのままです。図形描画は、既定で PNG の画像として移ります。フォームも移りますが、フォームを含むタスクには、フォームを保存する Microsoft 365 の利用者のメールアドレスを、移行先とは別に指定します。共有ドライブの中にあるフォームは移せず、詳細レポートに MNOTSUPPORTED と出ます。Google サイトと Google マップは移らず、ショートカットは飛ばされます(サポートされていないファイル)。
スプレッドシートには、移す前に点検する道具があります。プロジェクト設定の[詳細設定]で[シート スキャンを有効にする](Learn では[Google スプレッドシートのスキャンを有効にする])を選ぶと、Excel で動かない可能性のある数式と、シートに埋め込まれた Google のリンクを、スキャンと一緒に報告します(シート スキャン)。既定はオフで、使うには Google Workspace Marketplace で移行アプリにスプレッドシートを見る権限を付けておきます。このスキャンは、各スプレッドシートから最大1,000セル(空白のセルを含む)の見本を取って判定し、数式を直したりリンクを書き換えたりはしません。報告に出たシートは移したあとに持ち主が開いて確かめ、報告に出なかったシートにも、見本の外に Excel で動かない数式が残っている場合があると考えておきます。
設定しないと移らないもの
古い版は、既定では移りません。移るのは各ファイルの最新の版だけです。プロジェクト設定の[詳細設定]の[ファイル バージョン]は、「ファイル バージョンを移行しない」が既定で、ほかに「特定数のファイル バージョンを移行する」「すべての既存のファイル バージョンを移行する」を選べます。すべての版は最大5万で、負荷を抑えるには数を指定して10以下にする、というのは Learn の説明で、画面には出ていません(ファイル バージョン)。移行先のライブラリで版の管理がオフになっていると、MVERSIONDISABLE で失敗します。2026年10月時点の説明では、版の移行が使えるのは Google からの移行だけです。ファイル単位の権限も既定では移りません。これは次の節で扱います。
ドキュメントのコメントと、共有ドライブでアクセスを絞ったフォルダー(制限付きアクセス フォルダー)の扱いは、今回確かめた Microsoft の説明には書かれていませんでした。移るかどうかを決めつけず、あとの節の試しの移行で確かめます。
権限は、役割が3つに縮まり、ルートの扱いは移行先の選び方で変わる
移行マネージャーは、既定でフォルダーの権限を移します。ファイル単位の権限は移さず、移したファイルは親フォルダーの権限を引き継ぎます。プロジェクト設定でファイル単位の権限を有効にすると、移行先のファイルの権限が元と同じになり、移す前と同じ人と共有された状態になります。その分、移行は遅くなることがあります(アクセス許可の設定)。
権限を移すには、先に ID の対応付けを済ませます。Google 側のドメイン・利用者・グループを Microsoft 365 の利用者・グループに対応させる作業で、相手は先に Microsoft 365 に作っておきます。自動の対応付けは名前が完全に一致したものだけで、自動だけで全員が対応する見込みは低いとされています(手順 5: ID のマッピング)。残りは1件ずつ直すか、CSV でまとめて読み込みます。CSV の中身は検証されないので、読み込む前に目で確かめます。ID の対応付けをしても、それだけでファイル単位の権限が移るようにはなりません。
役割の対応は次のとおりです。Google の役割名は Google のヘルプ(共有ドライブ、マイドライブの共有)、Microsoft 365 の役割は Learn の対応表によります。右端の列は、対応表から当社が読み取った、移したあとに決めることです。
| 移行元 | Google の役割 | Microsoft 365 での役割 | 移したあとに決めること |
|---|---|---|---|
| 共有ドライブ | 管理者 | 編集可能 | メンバーの追加・削除をしていた人も編集可能になる。サイトのメンバーを管理する所有者を誰にするか |
| 共有ドライブ | コンテンツ管理者・投稿者 | 編集可能 | 共有ドライブでは、ゴミ箱への移動とドライブ内の移動は管理者とコンテンツ管理者だけができた。投稿者だった人も動かしたり消したりできるようになってよいか |
| 共有ドライブ | コメント投稿者・閲覧者 | 表示可能 | コメントできた人も表示可能になる。それでよいか |
| マイドライブ | オーナー | 所有者(Learn の表では Owner) | — |
| マイドライブ | 編集者 | 編集可能 | — |
| マイドライブ | 閲覧者(コメント可)・閲覧者 | 表示可能 | — |
共有ドライブを移すときに最初に決めるのが、移行先をライブラリのルートにするか、ライブラリの中のフォルダーにするかです。ライブラリのルートを移行先にすると、移行元のルートのフォルダーの権限は移りません。移したい場合は、ライブラリの中にフォルダーを作り、そこを移行先にします(手順 4)。共有ドライブでいえば、ルートの権限とは共有ドライブのメンバーと役割のことです。
ルートに移す A の形では、ルートで誰が見られるかはサイトの権限で決まります。共有ドライブの権限を移すときは、Google のグループと同じメンバーの Microsoft 365 グループを作り(移行先のチーム サイトにつながったグループを直してもかまいません)、ID の対応付けで Google のグループをそのグループに対応させる、というのが Learn の勧めです。共有ドライブ1つをサイト1つに移すなら、A の形にしてサイトのメンバーで管理するほうが、あとで「誰が見られるか」を1か所で説明できます。1つのサイトに権限の違う共有ドライブを複数まとめるなら、B の形にしてフォルダーごとに権限を持たせます。
ファイル単位の権限を有効にするかは、スキャンの結果を見てから決めます。SharePoint のライブラリでは、固有の権限を持つアイテムは5万までで、一般的な目安は5,000とされています(OneDrive と SharePoint の制限事項)。比べる相手はアイテムの数なので、スキャンの詳細(TransactionItem.csv)で、親と違う相手と共有されている数の列 SourceAclsUnique が1以上の行を数えます。上限はライブラリごとの数なので、B の形で1つのライブラリに複数の共有ドライブを入れるときは合計で見ます。この目安を超えるなら、ファイルごとの共有をフォルダー単位にまとめられないかを、移す前に持ち主と話しておきます。
Lite では、この数を移す前には出せません。ファイル単位の権限を移すかは、移す前に決めます。Lite のウィザードの移行の設定にこの項目が含まれるかは Learn に明記が無いので、ウィザードで設定を開いたときに確かめます。既定(オフ)のまま移すと、ファイルは移行先のフォルダーの権限を引き継ぎます。Google でファイルごとに共有を足していた相手は、フォルダーやサイトの権限で見られる人でなければ、そのファイルを見られなくなり、ファイルにだけ足した編集の権限も移りません。有効にすると元と同じ相手と共有されます(社外の相手と、ID の対応付けをしていない相手を除く)が、移行は遅くなることがあります(アクセス許可の設定)。決める材料は、共有ドライブの管理者や持ち主への聞き取り(ファイルごとに相手を足して共有しているか)です。試しの移行で、ファイルごとに共有を足したファイルを1つ入れて、見られる人がどう移るかも確かめておきます。
パスの長さ:当社は移行先のサイトの URL から数えて見積もる
パスの長さは、移行先のサイトの URL から数えて見積もり、元の文字のまま数えても、日本語や空白を URL の形(%xx)に直して数えても、どちらか一方で400字を超えるファイルは、移す前に名前を短くする候補にする。そのうえで、実際に移るかは試しの移行の詳細レポートで確かめる。これが当社の進め方です。厳しい側で見るのは、Microsoft の説明どうしで、どこから・どちらの形で数えるかがそろっていないからです。移行マネージャーは「400字を超える宛先パス URL」を移さないと書き(サポートされていないファイル)、SharePoint の制限はデコードした(元の文字に戻した)ファイルパス全体で400字と書いています(SharePoint の制限)。パスの長さの記事は、ブラウザーで見るパスはライブラリのルートから始まると説明し、同じ記事の確かめ方の節では、URL の形に直した文字も400字に数えると書いています(ファイル パスの長さ制限)。
作例の見積書は、Google 側のパスでは52字です。移行先の URL を頭に付けると111字、URL の形に直すと353字になります。日本語は URL の形にすると1文字が9字になるので、日本語の名前が続く深い階層は、元の文字で余裕があっても URL の形では400字に届きます。
あと2つ、目安があります。スキャンの概要の LongPath.csv は、移行元のパスの長さ(SourcePathLength)が300字を超え、移行できない項目を一覧にします(レポート)。また、移したあとにパソコンへ同期して使う場合、Windows の Word・Excel・PowerPoint は、フルパスが260字を超えるファイルを開けません(ファイル パスの長さ制限)。パソコンで開く使い方を続けるなら、クラウドの400字に収まっていても、深い階層と長い名前は移行のついでに浅く短くしておきます。
長すぎるパスを見つける順番
標準の移行マネージャーなら、スキャンのレポートで3段階に絞れます。まず ScanSummary.csv の MaximumPathLength で、タスクごとのいちばん長い移行元のパスを見て、問題のありそうなドライブを選びます。次に LongPath.csv で、300字を超えて移らない項目を確かめます。最後に、スキャンの詳細の TransactionItem.csv の FullPath(移行元のパス)に、割り当てる予定の移行先の URL を足して数えます。移行の詳細レポートの TransactionItem.csv にも FullPath の列があります。Lite では、試し用のドライブについては試しの移行の詳細レポートで同じ数え方ができますが、本番のドライブは移す前には数えられないので、本番の移行の詳細レポートで MITEMPATHLENGTH の行を見つけ、次の「長すぎたときの直し方」で直します。
最後の段は、次の PowerShell で一覧にできます。元の文字の長さ(Length)と URL の形の長さ(EncodedLen)の両方を出し、どちらかが400字を超えるか、SharePoint で使えない名前を含む行を check_paths.csv に書き出します。当社の手元で、公式の列名どおりに作った架空の TransactionItem.csv に対して Windows PowerShell 5.1 で動かし、日本語のパス(元の文字で154字、URL の形で668字)を一覧にすることも確かめました。PowerShell 7 では試していません。
使う前に4つ確かめてください。$dest を割り当てる予定の移行先に、$atRoot をライブラリのルートかどうかに合わせます。FullPath の1段目を、同じ行の SourcePath 列と見比べ、同じ名前なら $skip を1にします(移行先に付かない段を外して数え、ライブラリのルートの forms もそこから見ます)。SourcePath は、移行元の CSV の書式から推すと、共有ドライブなら /共有ドライブ名 の形になるはずです。誤って1にすると短く数えてしまうので、スクリプトは、行ごとの1段目がそろっていないときと、共有ドライブのタスクで1段目が SourcePath と違うときに止まります。全部の行が同じフォルダーの中にあるマイドライブのタスクでは誤りを見分けられないので、1にする前に FullPath を目で確かめます。レポートは Excel で開いて上書き保存せず、ダウンロードしたままのファイルを使います(Shift_JIS で保存し直すと日本語が化けるので、スクリプトは止まるようにしてあります)。1つのファイルに複数のタスクが入っているときも止まるので、タスクを1つずつ選んでレポートを落とし直し、それぞれの移行先で実行します(複数のタスクをまとめて落としたときに1つのファイルになるかは、公式の説明に書かれていません)。止まったときと一覧にする行が無いときは、check_paths.csv は作られません(前の実行の結果も最初に消します)。前の check_paths.csv を Excel で開いたまま実行すると消せずに止まるので、閉じてから実行します。スクリプトは日本語を含むので、ファイルに保存するときは UTF-8(BOM 付き)にします。
# 詳細レポート(TransactionItem.csv)を読み、移行先で長くなるパスと、使えない名前を一覧にする
$csv = '.\TransactionItem.csv'
$dest = 'https://contoso.sharepoint.com/sites/eigyo/Shared Documents' # このタスクに割り当てる移行先
$atRoot = $true # 移行先がライブラリのルートなら $true、ライブラリの中のフォルダーなら $false
$skip = 0 # FullPath の先頭が共有ドライブ名なら 1(移行先に付かない段の数)
$limit = 400
$bad = '["*:<>?\\|]|^\s|\s$|^~\$|_vti_|^(\.lock|CON|PRN|AUX|NUL|COM[0-9]|LPT[0-9]|desktop\.ini)$'
$outCsv = '.\check_paths.csv'
if (Test-Path $outCsv) { Remove-Item $outCsv -ErrorAction Stop } # 前の実行の結果を残さない(Excel で開いたままなら消せずに止まる)
$rows = @(Import-Csv -Path $csv -Encoding UTF8)
if ($rows.Count -eq 0 -or $rows[0].PSObject.Properties.Name -notcontains 'FullPath') {
throw 'FullPath の列がありません。詳細レポートの TransactionItem.csv を指定してください'
}
if (@($rows | Where-Object { $_.FullPath.Contains([char]0xFFFD) }).Count -gt 0) {
throw '文字化けしています。Excel で上書き保存していない、ダウンロードしたままのファイルを使ってください'
}
if ($skip -gt 0) {
$tops = @($rows | ForEach-Object { ($_.FullPath.Trim('/') -split '/')[0] } | Select-Object -Unique)
if ($tops.Count -gt 1) { throw "FullPath の1段目が行ごとに違います($($tops[0])、$($tops[1]) など)。`$skip を 0 にしてください" }
if ($rows[0].SourcePath -like '/*' -and $tops[0] -ne $rows[0].SourcePath.Trim('/')) { throw "FullPath の1段目($($tops[0]))が SourcePath と違います。`$skip を 0 にしてください" }
}
$tasks = @($rows | Select-Object -ExpandProperty TaskId -Unique)
if ($tasks.Count -gt 1) {
throw "タスクが $($tasks.Count) 個入っています。タスクを1つずつ選んでレポートを落とし直し、それぞれの移行先で実行してください"
}
$out = @(foreach ($r in $rows) {
$names = @($r.FullPath.Trim('/') -split '/' | Select-Object -Skip $skip)
if ($names.Count -eq 0) { continue }
$path = $dest.TrimEnd('/') + '/' + ($names -join '/')
$ng = @($names | Where-Object { $_ -match $bad })
if ($atRoot -and $names[0] -eq 'forms') { $ng += $names[0] }
$o = [pscustomobject]@{
FullPath = $r.FullPath
Length = $path.Length # 元の文字のまま数えた長さ
EncodedLen = ([uri]::EscapeUriString($path)).Length # URL の形(%xx)に直した長さ
BadName = $ng -join ' / '
}
if ($o.Length -gt $limit -or $o.EncodedLen -gt $limit -or $o.BadName) { $o }
})
if ($out.Count -gt 0) {
$out | Sort-Object EncodedLen -Descending | Export-Csv -Path $outCsv -NoTypeInformation -Encoding UTF8
Write-Host "読んだ行: $($rows.Count) 一覧にした行: $($out.Count) (check_paths.csv)"
} else {
Write-Host "読んだ行: $($rows.Count) 一覧にする行はありません(check_paths.csv は作りません)"
}
このスクリプトでは、名前の中の「/」は見つけられません(FullPath を「/」で区切って調べるため)。また「#」は URL の形に直さずに数えるので、「#」を使える組織では、その分 URL の形の長さが短く出ます。Google ドライブでは名前に「/」を使っていることがあるので、レポートの FullPath で階層が想定より深く見える行は、名前を目で確かめます。
長すぎたときの直し方
直すのは、移す前の Google 側が基本です。初回の移行のあとで見つかった場合は、直し方で結果が変わります。移らなかったファイルの名前だけを短くするなら、そのファイルはまだ移行先に無いので、次の差分の移行で新しく移ります。フォルダーの名前を短くすると、そのフォルダーの中ですでに移っていたファイルが、新しい名前のフォルダーへもう一度コピーされ、古い名前のフォルダーも移行先に残ることがあります(よくある質問)。フォルダー名を変えるなら、移行先に残る古いフォルダーを確かめて消すところまで決めてから変えます。Lite では本番のドライブの長いパスは本番の移行のあとで見つかるので、ファイル名だけを短くする直し方を基本にします。試しの移行で防げるのは、名前を短くする基準(どちらの形で数えるか)を誤ることです。
SharePoint で使えない名前
ファイル名・フォルダー名に「” * : < > ? / \ |」は使えず、先頭と末尾の空白も使えません。.lock、CON、PRN、AUX、NUL、COM0〜COM9、LPT0〜LPT9、desktop.ini は名前として使えず、_vti_ を含む名前と ~$ で始まる名前、ライブラリのルートに置く forms という名前も使えません(OneDrive と SharePoint の制限事項)。Google ドライブでこうした名前を使っていると、移行先で初めて引っかかります。プロジェクト設定の[ファイルとフォルダー フィルター]では、「無効な文字を含むアイテムを移行する」が既定で「無効な文字を移行して “_” に置き換える」になっていました。何もしなければ、上の無効な文字(” * : < > ? / \ |)は「_」に置き換わって移ると考え、置き換わると困る名前は先に直します。CON や ~$ で始まる名前、ライブラリのルートの forms のような使えない名前と、先頭・末尾の空白は、この置き換えの対象ではないので、移す前に名前を変えます。同じタブで、拡張子、フォルダー名、作成日、変更日で移すものを絞れます(既定はどれも「除外なし」。プロジェクト設定)。同じフォルダーに同じ名前のファイルがあると、移行先では (1)、(2) と番号が付きます。
本番の前に、試し用の移行先へ1タスク移す
ここまでで、説明だけでは決めきれないことが3つ残りました。パスの長さがどちらの形で数えられるか、コメントと制限付きアクセス フォルダーが移るか、15〜250 GB のファイルが移るかです。移行マネージャーはタスク(ドライブかフォルダー)の単位で移すので、試しも1タスクで行います。移行先はあとから変えられないので、本番の移行先には向けません。
Google 側では、Google の管理者が試し用の共有ドライブを作り、確かめたい種類のファイルを新しく作って入れます。コメントを付けたドキュメント、アクセスを絞ったフォルダー、ダウンロードを制限したファイル、パスの長さを試すフォルダーとファイルです。長さは、元の文字ではサイトの URL を足しても400字未満、URL の形ではライブラリより後ろだけで400字を超えるようにします(数え始めがライブラリのルートでも、エラーになる長さにするため)。15〜250 GB のファイルがある会社は、その大きさのファイルも1つ入れます。Microsoft 365 側では、試し用のサイトを作ります。標準の移行マネージャーなら、試し用の共有ドライブをタスクとして足してスキャンし、移行先に試し用のサイトのライブラリを割り当てて移します。Lite なら、ウィザードで試し用の共有ドライブだけを選び、試し用のサイトを割り当てます。ウィザードを終えるとすぐに移行が始まります。
移し終えたら、移行の詳細レポートの ResultCode を見ます。長いパスのファイルに MITEMPATHLENGTH が出れば、URL の形で数えられていると見て、名前を短くする基準を URL の形の400字にします。出なければ元の文字で数えられている見込みが高いので、基準は元の文字の400字(サイトの URL から数える)にします。そのうえで、試し用のサイトでファイルを開き、コメント、版、見られる人(メンバーのアカウントで開く)を確かめます。結果は移行前の一覧の判断に戻し、名前を短くする基準と、移らないものの扱いを決めてから、本番のタスクを作ります。
移す前に直すものと、移行前の一覧の列
ここまでの移らないものの多くは、Google 側でしか直せません。移行マネージャーで本番のタスクを作る前に、Google の管理者と、中身を知っている利用者の作業を終えておきます。
退職した人のファイルは、アカウントを消す前にオーナーを移します。Google 管理コンソールの[アプリ]→[Google Workspace]→[ドライブとドキュメント]の[オーナー権限を譲渡]で、組織内の有効なアカウントへまとめて移管できます。削除済みのアカウントからは移せず、組織の外のアカウントとの間でも移せません(管理者としてドライブ内のファイルを新しいオーナーに移管する)。オーナーが見つからないファイルは、移行の詳細レポートに MOWNERNOTFOUND(オーナーを付け替える)と出ます。
移行前の一覧(棚卸し)は、次の列で作ると、移行先の割り当てと移行後の照らし合わせにそのまま使えます。数の列は、標準ならスキャンの概要から写します。Lite では Google 側の情報で埋められる列だけを埋め、パスと共有の数は本番の移行のあとに埋めます。スキャンで出る容量は、Google 管理コンソールの使用量と合わないことがあります。他の人のドライブにある自分のファイルは自分のタスクに入らないことと、2022年5月2日より前に作られたり変えられたりした Google 形式のファイルは、スキャンで1バイトと数えられることが理由です(よくある質問)。容量の差を埋めようとせず、ファイル数とパスで見ます。
| 列 | 書くこと | どこから取るか(標準/Lite) |
|---|---|---|
| 移行元 | マイドライブは 利用者のメールアドレス、共有ドライブは /共有ドライブ名 | 移行マネージャーの CSV の形 |
| 中身の持ち主 | 移行先と移らないものの扱いを決める人 | 社内で決める |
| ファイル数・容量 | 移す量と、分けるかどうか(10万アイテム・1TB) | ScanSummary.csv の FilesScanned・DataScanned/共有ドライブは管理コンソール「共有ドライブの管理」の[アイテムの上限](ゴミ箱内なども含むので多めに出る)。マイドライブの数を見る場所は、今回確かめた説明には無い |
| いちばん長いパス | 移行先の URL を足して400字、パソコンで開くなら260字に近いか | ScanSummary.csv の MaximumPathLength・LongPath.csv/Lite では移す前には取れない。本番の移行の詳細レポートの MITEMPATHLENGTH で見つけ、ファイル名を短くして差分で移す |
| 親と違う共有の数 | ファイル単位の権限を移すか | TransactionItem.csv の SourceAclsUnique が1以上の行の数/Lite では移す前には取れない。ファイル単位の権限を移すかは、持ち主への聞き取りで移す前に決める |
| 社外との共有 | ファイル、相手、移行先で共有し直す人 | 各利用者・共有ドライブの管理者の sharedwith:external の検索(リンクで公開したものは別に確かめる) |
| 孤立したファイル | 見つけてフォルダーに入れたか | 各利用者の is:unorganized owner:me の検索 |
| 移行先 | サイトの URL+ライブラリ(+フォルダー)、OneDrive、Teams のチャネル | 移行先の設計 |
| ルートの扱い | ライブラリのルートか、中のフォルダーか | 権限の設計 |
| 版の数 | 移さない/数を指定/すべて | 持ち主と決める |
| 移らないもの | サイト・マップ・共有ドライブのフォーム・制限付き・大きすぎるファイルと、その扱い(別の方法で移す/移さないと記録) | 詳細レポートの ResultCode |
| 確かめた人・日 | 移したあとにファイルを開いて確かめた人と日付 | 移行後に記入 |
初回の移行から切り替えまで:差分の移行の決まり
移行を始めても、Google Workspace からは何も削除されません。移行マネージャーはコピーするだけです。初回の移行のあとも利用者は Google で仕事を続け、もう一度[移行]を選ぶと、新しいファイルと更新されたファイルだけを移す差分の移行(画面では[差分同期]。増分移行とも呼びます)になります(差分同期)。
差分の移行には、切り替え日に効いてくる決まりがあります。既定の動きでは、移行先のパスが同じで、移行先のファイルのほうが新しければ、そのファイルは飛ばされます。つまり、Google と移行先の両方で同じファイルが編集され、移行先のほうが新しいと、Google 側の変更は移りません。権限は対応するファイルが転送されたときだけ更新されるので、中身を変えずに共有だけ変えたファイルは、既定の差分では移りません。[詳細設定]の差分同期で[すべてのファイルを移行し、移行先にある既存のファイルを上書きする]を選べば移りますが、移行先での編集も上書きされます。
最後の移行が終わるまでは、Google 側も移行先も、フォルダーの名前を変えたり、場所を動かしたりしないでください。名前を変えたフォルダーは新しいフォルダーとして扱われ、中身がもう一度コピーされて重複することがあります。ルートのフォルダーの名前を変えると、中身はすべてもう一度転送されます(よくある質問)。フォルダーの整理は、移行の前に済ませるか、切り替えのあとにします。
この決まりから、切り替えは次の順で進めます。切り替え日を決めて利用者に知らせ、その日から Google での編集を止めます。そのうえで最後の差分を移し、移行の詳細レポートと移行前の一覧を照らし合わせ、よく使うファイルを開いて確かめてから、移行先で仕事を始めてもらいます。同時に動かせるタスクはスキャンと移行を合わせて50までで、移行はスケジュールもできます。[詳細設定]の「電子メールによる通知」(既定はオフ)を使うと、移行の進み具合をメールで受け取れます。画面に出る移行の推定時間は、順番を待つ時間を含まず、差分の移行では大きく外れることもあるとされているので、切り替え日の前に一度差分を移して、かかった時間を見ておきます。移らなかったものを片付けるか、移さないと決めるまでは、Google 側を廃止しません(手順 6)。
切り替えの日に、利用者へ伝えること
切り替えの連絡には、次の項目を入れます。移行マネージャーの仕様から、利用者が戸惑う点を並べました。社名や置き場所を書き換えて使えます。
- 新しい置き場所:マイドライブの中身は自分の OneDrive に、共有ドライブ「営業部」の中身は SharePoint のサイト(URL)に移っています。
- ファイルの形:Google ドキュメント・スプレッドシート・スライドは Word・Excel・PowerPoint のファイルに、図形描画は画像になっています。Google のファイルは残っていますが、切り替え日(日付)からは編集しないでください。編集しても移行先に移らないことがあります。
- 社外との共有:社外の人と共有していたファイルは、共有が引き継がれていません。一覧にあるファイルは、移行先で共有し直してください(誰が・いつまでに)。
- ショートカット:Google ドライブのショートカットは移っていません。よく使う場所は、移行先で開き直して確かめてください。
- 古い版:移っているのは各ファイルの最新の版(または設定した数の版)です。古い版が必要なときは、期限(日付)までに知らせてください。
- 開けないファイル:パソコンに同期したファイルが Word や Excel で開けないときは、パスが長すぎる可能性があります。ブラウザーで開き、フォルダーやファイルの名前を短くしてください。
- 見当たらないファイル:場所とファイル名を問い合わせ先(窓口)に知らせてください。移らなかったものの一覧と照らし合わせます。
切り替えたあとの共有のしかた(メールに添付せずリンクで渡すなど)を同じ機会に決めておくなら、OneDrive・SharePoint でメール添付をやめる、リンク共有の社内ルールの記事が参考になります。
移行の日程は、試しの移行の結果を見てから決める
パスの数え方、コメントの扱い、15〜250 GB のファイルは、Microsoft の説明だけでは決めきれません。決めきれないまま本番の日程を先に置くと、変えられない移行先で手戻りが起きます。日程は、試し用の共有ドライブとサイトで1タスク移し、その詳細レポートを見てから決めてください。最初にやるのは、試し用の共有ドライブとサイトを1つずつ作ることです。
当社は、Google Workspace から Microsoft 365 への移行を、Google ドライブのファイルの移行も含めて支援しています。
Microsoft 365・Google Workspace の移行と設定のスポット相談
メールの移行、ドメインとDNS、共有アドレスや代理人の権限、新しいOutlookへの切り替え、Copilot・Geminiを使うときの社内ルール。調べた手順で直らないとき、同じことが何人もで起きているときに、いま困っていることを1件から相談できます。
