【GAS】Exception: The document is inaccessible. Please try again later.の解消法

GASで以下のようなエラーが出ているのではないでしょうか。

今回は、このエラーの原因とよく起こりやすい事例、解消法を解説していきます。

実際のコードを使用して紹介していくので、ぜひそのまま使ってみてください。

また、紹介するコードは私が事前に全てテストしているものですので、安心して使ってみていただければと思います!

では、早速エラーについて見ていきましょう!

【原因】word形式を指定していると発生する

今回の事象の原因は、Googleドライブ上にあるword形式のファイルをDocumentAppで開こうとしてしまったことです。

例えば、以下のようなコードで発生します。

const id = "***************";//ドキュメントID
const document = DocumentApp.openById(id);//ここでエラー発生

そのため、word形式のファイルをDocumentAppで開くには、
word形式をGoogleドキュメント形式に書き換えなければいけません。

2つの解決法

解決法は以下の2つです。

  1. word形式を手動でコピーして作り直す
  2. GASにてword→ドキュメントに変換するコードを組む

では、それぞれ見ていきましょう。

【解決法①】word形式を手動でコピーして作り直す。

word形式を手動でドキュメント形式に直すのは、そんな大変ではなく、ワンステップで完了できます。

①まず対象のwordファイルを開きましょう。

ファイルから「Googleドキュメントとして保存」を選択します。

そうすることで、Googleドキュメント形式のファイルが保存されます。

作成されたGoogleドキュメントから再度ドキュメントIDを取得して、指定すればうまく行くようになるはずです!!

【解決法②】GASにてword→ドキュメントに変換するコードを組む

もう一つの方法は、GASのコード内でword形式のファイルをドキュメント形式に変換するコードを組み込むことです。

コードの概要

①ファイルに対して、wordファイルかどうか判定するif文を組む

②wordファイルだったものに対して、ドキュメントへの変換をする。

次に実装に必要な前準備をします。
以下の2つが必要です。

前準備

Drive API の準備

サービスから、「Drive API」を選択しておきましょう。

※バージョンはv2を入れてください。
v3もありますが、今回のコードでは使用できまないです。

あべべ

ここまで、準備ができたら早速コードから見ていきましょう。

var fileId = "***************";//ドキュメントID
  let file = DriveApp.getFileById(fileId);
  var mimeType = file.getMimeType();
   if (mimeType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {
    console.log('word形式でした。')
    // Word ファイルを取得して Google ドキュメント形式に変換
    var blob = file.getBlob();
    var resource = {
      title: file.getName(),
      mimeType: MimeType.GOOGLE_DOCS
    };
    file = Drive.Files.insert(resource, blob); // Googleドキュメントとしてファイルをインサート
  }

  const document = DocumentApp.openById(file.getId());

if文で、word形式かどうかを判定しています。

word形式だとmimeTypeが「application/vnd.openxmlformats-officedocument.wordprocessingml.document」になるので、それを利用しています。

その後、新たにファイルを作り直す際にmimeTypeを「GOOGLE_DOCS」に指定して行います。

そうすることで、新たに作成されたファイルがGoogleドキュメント形式になり、
当初の予定通り、DocumentApp.openByIdを使用することができます。

あべべ

ファイルが複数ある場合などは、コードを組む方が断然便利です。

最初は少し面倒ですが、ぜひ使って見てください!

chatGPTの以下方法はうまくいかない

chatGPT4にて聞いてみると以下のような方法を提案されます。

ただ、エラーになるので注意してください。
Drive APIを使った方法が一番無難な気がします。

// Word ファイルを取得して Google ドキュメント形式に変換
var blob = file.getBlob();
blob.setContentType(MimeType.GOOGLE_DOCS);
var newFile = DriveApp.createFile(blob);

まとめ

今回は、Exception: The document is inaccessible. Please try again later.の原因と解決法について紹介しました。

ぜひこちらの方法を使って見て、エラーが解決できたら嬉しいです!

ドキュメントを開く際によく使うコマンドですので、参考にして見てくださいね。

では、またどこかでお会いしましょう!

(Visited 322 times, 1 visits today)