Driveクラスをちょっとつかったのでメモ
やりたかったのは指定のファイルと同じフォルダに名前を変えてコピーをつくる、だけだったんだけど。
色々時間かかったので忘れないようにメモ
リファレンス大事だねぇ。
1.前準備
権限設定しておく(ここではDrive関連のエントリだけ記載
(スプレットシートなど他の操作をする場合はそちらのエントリも必要
appsscript.json
{
"oauthScopes": [
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/drive",
]
}
2.ファイルの取得
上記の権限があれば以下でファイルオブジェクトが取得できる
Fileクラス
FILE_IDは開きたいDriveファイルのID
let file = DriveApp.getFileById(FILE_ID);
3.親フォルダの取得
GoogleDocはファイルが一つ以上のフォルダに所属しちゃうので、親フォルダをとろうとすると、フォルダリストのイテレータから探さないといけない
Folderクラス
Folderイテレータ
let folderIterator = templateFile.getParents();
while(folderIterator.hasNext()){
let folder = folderIterator.next();
console.log(floder.getName());
}
4.コピーの作成
コピー自身は簡単
let file = DriveApp.getFileById(FILE_ID);
let parentFolder = DriveApp.getFolderById(FOLDER_ID);
file.makeCopy(); // 純粋にコピー
file.makeCopy(COPY_NAME); //COPY_NAMEで指定したファイル名でつくる
file.makeCopy(COPY_NAME,parentFolder); //指定したフォルダに指定したファイル名で
5.おまけ
そういえば、ファイルコピーしたらスクリプトもコピーできてた
よく考えたら当たり前だけど。