0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GAS を使ったGoogle Driveのファイルの移動についてハマったこと。

Last updated at Posted at 2020-07-09

この記事について

表題について少しはまったのでmemo。

やりたかったこと。

フォルダAのスプレッドシートをフォルダBにコピー(copyFile)する。
コピーファイルのidをゲットして、いろいろSpreadsheetAppクラスのメソッドを使って操作したい。

まず、Google Driveにおけるファイル操作は下記の2パターンある。

  • DriveAppサービスを使う
  • DriveAPIを使う
    • スクリプトのプロジェクトに下記のいづれかの方法で明示的に読み込み設定が必要。
      • マニフェストファイルに記述する
      • リソース>Googleの拡張サービス>Drive APIのチェックをonにする

コピーの仕方にも色々あった。

前提


var sourceFolder = DriveApp.getFolderById(souceId); //ソースフォルダ
var destinationFolder = DriveApp.getFolderById(destId); //宛先フォルダ
var sourceFile = DriveApp.getFileById(fileId); //ソースファイル

var copyFile; //ここにコピーしたファイルを入れたい

方法1

copyFile = destinationFolder.createFile(sourceFile.getBlob());
copyFileId = workingFile.getId();
doc = SpreadsheetApp.openById(copyFileId).getSheets()[0];

なぜか、PDFとしてコピーされるので、3行目でエラーになる。

方法2

mimecode = "GOOGLE_SHEETS";
options = {
        title: sourceFile.getName(),
        mimeType: MimeType[mimecode],
        parents: [{ id: destinationFolder.getId() }]
    };
copyFile = Drive.Files.insert(options, sourceFile.getBlob());
copyFileId = copyFile.getId();
doc = SpreadsheetApp.openById(copyFileId).getSheets()[0];

なぜか、Google Document(.gdoc)としてコピーされるので、3行目でエラーになる。

方法3

copyFile = destinationFolder.addFile(sourceFile);
copyFileId = copyFile.getId();
doc = SpreadsheetApp.openById(copyFileId).getSheets()[0];

戻り値がFileではなくFolderなので、保留。

方法4

copyFile = sourceFile.makeCopy(sourceFile.getName(), destinationFolder);
copyFileId = copyFile.getId();
doc = SpreadsheetApp.openById(copyFileId).getSheets()[0];

求める結果になった。こちらを採用。

さいごに

なぜ、PDFやGoogle Docになるのか、不明なままです。
②に関してはmimetypeの指定方法が違うのかも。
もし、何かわかる方がいらっしゃればコメントいただけると嬉しいです。

個人的にはGoogle製品のコピーは"方法4"、MS Office製品をGoogle形式に変換する場合は"方法2"で良いのかなと思います。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?