本業は機構設計エンジニアです。この投稿は本業で発生した事例についての情報共有です。この事例が特殊になりますが、同様近似の現象が発生しているかたには参考になったり解決のヒントになるかもしれません。
TeamsでのPDFやExcelファイルのリンク切れの現象
ExcelファイルA.xlsxをエクスポートしてA.pdfファイルを作成しました。A.pdfファイルや元ファイルのA.xlsxファイルを開くと、リンクが記載されており、別のファイルB.pdfへ飛ぶようになっています。ローカル(自分のPC)では飛んで機能しています。
メンバーと共有するためにそのA.pdfとB.pdfをSharePointに格納しました。その後SharePointで作成したホームページに、A.pdfファイルへのリンクを貼りました。
リンクを開けません
このリンクのアドレスが正しくないか見つからないか、またはローカルファイルを参照している可能性があります。確認するか、デスクトップアプリでもう一度お試しください。
動作確認すると、ホームページのリンクからA.pdfは開けました。動作OK。しかしA.pdfファイル内に貼っているリンクをクリックしますが飛ばずに「リンクが開けません」という不具合現象が発生した。A.pdfの代わりに元データであるExcelファイルA.xlsxを同じTeamsチームチャンネルに格納しましたが、同様にリンク切れになりました。PDFでもExcelでも同じです。
なおExcelからPDF化する際にエクスポートした理由は、リンクが引き継がれて機能するからです。下記参照ください。
TeamsでのPDFやExcelファイルのリンク切れの原因
ネットで調べても似た事例がでてこないため、独自にカットアンドトライの調査になりましたが、下記3つの原因の複合要因だったことを突き止めました。
1.相対リンクが原因
相対リンクを貼っているExcelをエクスポートしてPDFを作成しました。そのPDFファイルに貼っているリンクも元ファイルを引き継いで相対リンクになります。
相対リンクで結ばれたファイル、今回の事例だとをA.pdfとB.pdfをTeamsやSharePointへ格納すれば、リンクは保たれますので、リンク切れは発生しません。しかし、例えばA.pdfファイルだけをダウンロードしてローカル(ご自分のPC)で使用するとリンク切れします。
今回の場合はSharepoint内で発生しており、相対リンクでも問題ないはずです。実は次の2つ目の原因との複合で発生しています。
2.ファイルの保存先URLが原因
・・・・table.xlsx?d=w3ea6d****409196e*****&csf=1&web=1&e=oErHMv
「リンクのコピー」で取得したURLは上記ように、末尾に「?」以降の不要なものがついてきます。 これがSPOで不具合を起こす原因です。
ホームページに貼られた上記のリンクをクリックしてブラウザのURL枠を確認すると、
・foam・・・table.xlsx
自動的に「foam」が入ってA.pdfを開いてしまいます。そこから相対リンクでB.pdfへ飛ぶことになりますので、実際には飛べずにリンク切れになる、ということです。
3.SharePointのWEBパーツ「ヒーロー」が原因
「リンクのコピー」のURL「?」以降の末尾を削除して直リンクを入れても、ブラウザのURL枠を確認すると「foam」が入ってしまいます。ほかのWEBパーツ「クイックリンク」「リンク」やリンクの直打ちは問題なく正しく飛びますが、この「ヒーロー」はなぜか「foam」が入る仕様のようです。
今回の事例はSharePointで発生しておりますが、あとで確認するとTeamsチームチャネルに投稿してリンクを貼っても同様に発生します。これはTeamsで格納されたファイルも裏でSharePointで格納されているためで挙動が同じになります。
TeamsやSharePointのExcelやPowerPointやPDFのリンク切れ対策
以上の調査結果から下記の対策が有効です。
- 相対リンクはリンク切れになる可能性が高いため理解して注意して使用しましょう。できれば絶対リンクに変更するか、リンクが貼られたファイルとそのリンク先ファイルは一緒に動かすまたはコピーしましょう。
- SharePoint格納(保存)ファイルへの「リンクのコピー」を利用の際にはそのURLに注意。コピーしたURLの「?」以降の末尾は削除して、直リンクを使用しましょう。
- モダンUIのWEBバーツ「ヒーロー」には注意。そのリンク先のファイルに貼付の相対リンクはリンク切れが発生します。WEBパーツは「クイックリンク」や「リンク」を使用しましょう。
補足:Teamsのチームとチャットのファイル保存場所の違い
補足でご存じない方のために簡単に説明します。Teamsの「チームチャネル」でのやり取りと、「個人チャット」や会議を含めた「グループチャット」では、ファイルの保存場所が違います。
Teamsのチームファイルの保存場所
Teamsでアップロードしたファイルは「SharePoint(シェアポイント)」という保存場に自動で送られます。これって、チーム専用の「オンラインフォルダ」みたいなものになります。
Teamsのチャットや会議チャットファイルの保存場所
ファイルはそのファイルを送った人のOneDriveに保存されます。
「Teams > OneDrive > Microsoft Teams Chat Files」というフォルダに自動で入ります。
ファイルを他のチャット参加者と共有するために、そのファイルのリンクが生成されます。このリンクを使って、他の参加者がファイルにアクセスできるようになります。
- チームチャネルのファイル → SharePointに保存
- チャットや会議チャットのファイル → OneDriveに保存
それぞれ仕組みが違うので、ご認識ください。
TeamsチームのSharePointを確認したい
チームチャンネルのファイルが保存されているSharePointを確認する方法を紹介します。
- 手順1Teamsのチームチャンネルを開く
Teamsを起動させ、チームのチャンネルを開いてください。
- 手順2SharePointを開く
Teamsウインドウの上側にある「ファイル」→「SharePointで開く」をクリック
- 手順3格納ファイル一覧とホームページ
格納されている「Sharepoint」「ドキュメントホルダ」のファイル一覧が現れます。ホームページは、左横ナビゲーションにある「ホーム」をクリックすると参照できます。
Teamsで共有したファイルの場所を確認したい
Teamsで保存したはずなのに、どこに格納したのかわからない場合ありますよね。そのファイルのを確認したい場合には、下記記事を参照するとわかります。
まとめ
相対リンクはリンク切れになる可能性が高いため理解して注意して使用しましょう。
SharePoint格納(保存)ファイルへの「リンクのコピー」を利用の際にはそのURLに注意しましょう。コピーしたURLの「?」以降の末尾は削除して、直リンクを使用しましょう。
モダンUIのWEBバーツ「ヒーロー」には注意しましょう。そのリンク先のファイルに貼付の相対リンクはリンク切れが発生します。ファイルに相対リンクがある場合にはWEBパーツは「クイックリンク」や「リンク」を使用しましょう。
コメント