ウェブ版OneDriveでcsvがxlsxに変換される問題と戦ってみた

概要

OneDriveフォルダにcsv形式のファイルを保存し、ウェブ版OneDriveで開くと、自動的にxlsxファイルに変換されてしまうという問題が取り沙汰されていた。さらに、悪質なことに元のファイルは自動削除されるほか、バージョン履歴からも元のcsvに戻すことができないという大きな問題があった。
ここで、著者はファイル形式"csv"が"xlsx"に変わると、1文字文字が増える点に着目した。Windowsではファイル名の長さに制限があるため、ファイル名を制限文字数まで長くすることで、勝手な変換を防ぐことができると考えられる。結果、ローカルで設定可能な最大文字数のファイル名をつけることで、ウェブ上のファイルは変換されるが、ローカルのファイルにはその影響が波及しないことが確認された。

マテリアル and メソッド

実験には「Windows 11 Pro (OSビルド: 22621.675)」を使用した。OneDriveのバージョンは22.217.1016.0002 (64ビット)、ウェブ版OneDriveを開くのに使用したブラウザはFireFox 106.0.5 (64 ビット)で、2022/11/9に実施した。
実験用のファイルは以下の手順で作成した。「test.csv」というファイルを作成し、エクスプローラ内でファイル名の変更を行った。しかし、この方法には罠があり、ある一定以上の文字数に到達すると、新たな文字入力が無効化される仕様となっていた。そこで、コマンドプロンプトのrenコマンドを用いて、つけられる最長のファイル名をつけることを試みた(図1)。結果、「test~abcde.csv」(以下、最長ファイル)というファイルを得た。

図1. コマンドプロンプトのrenコマンドを用いたファイル名の変更。1行目, ファイル名変更はエラーが発生; 2行目, 最後の"f"を除いて1文字短くしたファイル名では正常にファイル名変更が終了。赤塗りつぶし部分はユーザー名で英字6字の文字列である。

また、比較のため、もう一文字短く、csv→xlsxとなっても文字数オーバーしない「test~abcd.csv」(以下、最長-1ファイル)も作成した(図2)。

図2. コマンドプロンプトのcopyコマンドを用いた最大文字列より1文字短い「test~abcd.csv」ファイルの作成

結果

FireFoxを用い、ウェブ版のOneDriveを開いた結果、無事最長ファイルのアップロードが確認された(図3)。


図3. アップロード直後の最長ファイルの状態

アップロードされたファイルを開いたところ、既報を再現してファイルの変換が実行された(図4)。

図4. 最長ファイルを開いた際に表示されるファイルの変換画面

しかし、実際にはファイルの変換は実施されず、エラーメッセージが表示された(図5)。

図5. 最長ファイルを開いた際に表示されるエラー画面

予想通り、ファイルの変換に失敗したように見られたが、再度ウェブ版OneDriveのフォルダ画面を確認すると、拡張子自体は「.xlsx」に変換されたかのように表示された(図6)。ローカルのフォルダからファイルを確認すると、csvファイルのまま保存されていた(図7)。フォルダ名だけではなく、実際にVisual Studio Code (以下、VSCode)で開けることも確認している(xlsxに正常に変換されていると、開くことができない。Data not shown)。
しかし、ウェブ版OneDriveにおいては変換自体は実施されているようで、ダウンロードした場合はxlsxに変換されたファイルがダウンロードされた。つまり、変換がローカルに同期される段階を阻止しているものと考えられ、パスのユーザー名が短い別のPCでは変換を阻止することができない可能性もある(未検証)。

図6. 最長ファイルを開いた後にウェブ版OneDriveから確認した際に表示されるファイル名(なお、実際には変更されていない)

次に最長-1ファイルでも同様の実験を実施した。予想と反し、最長-1ファイルでも図5に示したエラー画面が表示され、編集をすることはできなかった。なお、短いファイル名では編集を行うことができたため、一定以上の文字数のファイル名を持つファイルの編集はできないようになっていると思われる。

図7. 最長ファイルおよび最長-1ファイルをウェブ版OneDriveで開いた後のローカルフォルダ。最長ファイルはcsv形式を維持しているが、最長-1ファイルはxlsx形式に変換されてしまっている。

しかし、最長-1ファイルは最長ファイルと異なり、xlsxファイルへの変換が勝手に実行されてしまった(図7)。変換後の最長-1ファイルをVSCodeで開いた場合においても、正常に開くことができないようになっていた(図8)。

図8. 変換後の最長-1ファイルをVSCodeで開いた際に表示されるエラー。

ファイル名の変更および、csv形式でない状態への変換がなされていることは確認できたため、正常にxlsxファイルに変換できているかを確認した。しかし、Excelで開いたところ、ファイル名の長さからエラーが表示され、変換の成功を確認することができなかった(図9)。なお、エラーの指示通り、ファイル パスが259文字以下になるように名前を変更したところ、Excelにて正常に開くことができ、ウェブ版OneDriveによる変換が成功していることが確認できた。

図9. 変換後の最長-1ファイルをExcelで開いた際に表示されるエラー。

結論

ウェブ版OneDriveでは、ファイル名が一定以上長いファイルを開き、編集することはできないが、ファイル編集の可否を問わず変換は試みられる。その際、ファイル名の文字数がローカルでの限界未満であれば、正常にcsvからxlsxに変換されることが確認された。注目すべき点として、筆者が期待した通り、ファイル名の文字数がローカルの限界文字数と一致している場合に関しては、ファイルの変換自体がローカルに波及しないことが確認された。しかし、別のPCでの同期に問題が出る可能性や、ウェブ版からダウンロードした場合ではxlsxに変換されてしまうため、ファイル名の長さと相まって実用性は皆無である。

記事の内容はここまでで、以下この記事に関連した内容は存在しない。この記事が気に入った方は、購入していただけると、著者の助けとなる。

ここから先は

14字

¥ 100

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?