Clik here to view.

photo credit: Flооd snow day on kitchen road via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps Scriptでスプレッドシートを指定のフォルダに作成する方法をシリーズでお伝えしています。
前回の記事はこちら。
GoogleドライブのフォルダやファイルをIDを使って取得する方法についてお伝えしました。
今回はその続きとして、Google Apps ScriptでGoogleドライブの指定のフォルダにファイルを追加する方法、削除する方法についてお伝えします。
追加と削除ができれば、移動もできます。
では、行ってみましょう!
前回までのおさらい
前回までの連載で、以下のようなスクリプトを作りました。
var FOLDER_ID = '{フォルダID}'; function creatSS() { var idSS = SpreadsheetApp.create("新規SS").getId(); var fileSS = DriveApp.getFileById(idSS); var folderTarget = DriveApp.getFolderById(FOLDER_ID); }
この時点では
- createメソッドでスプレッドシートを作成
- 作成したスプレッドシートのIDを取得
- スプレッドシートのIDを使って、そのFileオブジェクトを取得
- 移動先となるFolderオブジェクトを取得
という処理をしていますが、この後の手順として
- 移動先となるFolderオブジェクトにFileオブジェクトを追加
- ルートフォルダからFileオブジェクトを削除
を加えることで、Googleドライブ内の任意のフォルダに作成したスプレッドシートを移動することができるというわけです。
では、その部分を解説していきましょう。
addFileメソッドでGoogleドライブのフォルダにファイルを追加する
まず、Googleドライブの指定のフォルダにファイルを追加するには、addFileメソッドを使います。
書き方はこうです。
先ほどのスクリプトに処理を追加して、以下のようにします。
var FOLDER_ID = '{フォルダID}'; function creatSS() { var idSS = SpreadsheetApp.create("新規SS").getId(); var fileSS = DriveApp.getFileById(idSS); var folderTarget = DriveApp.getFolderById(FOLDER_ID); folderTarget.addFile(fileSS); }
これでFOLDER_IDで指定したフォルダに、作成したスプレッドシートが追加されるわけです。
今回は「スプレッドシート作成・移動」というフォルダのIDを指定していますので、そこにスプレッドシート「新規SS」が追加されます。
Image may be NSFW.
Clik here to view.
ルートフォルダに作成したスプレッドシートが残ってしまう
これで「指定のフォルダにスプレッドシートを作成する」という要件は達成したことになるのですが、一点「やり残したこと」があります。
というのも「マイドライブ」をを見てみると…
Image may be NSFW.
Clik here to view.
「新規SS」がこちらにもありますね。
createメソッドでは必ずマイドライブ(つまりルートフォルダ)にスプレッドシートが作成されます。そして、addFileメソッドでそのファイルを指定のフォルダに追加したのですが、つまりそれはコピーがされたということなんですね。
ルートフォルダにできたファイルを削除しなければなりません。
Googleドライブのルートフォルダからファイルを削除する
removeFileメソッドで指定のフォルダからファイルを削除する
Googleドライブの指定のフォルダからファイルを削除するには、removeFileメソッドを使います。
書き方はこちら。
addFileメソッドと類似していますね。
getRootFolderメソッドでルートフォルダを取得
ルートフォルダにも当然IDがありますので、getFolderByIdメソッドを使ってルートフォルダを取得するという方法も当然あるます。
ですが、ルートフォルダはgetRootFolderメソッドで簡単に取得できます。
このように書きます。
これで、現在のアカウントのGoogleドライブのマイドライブつまりルートフォルダを指定できます。
スプレッドシートを指定のフォルダに作成するスクリプト
以上をふまえて、スプレッドシートを指定のフォルダに作成するスクリプトを作りました。
var FOLDER_ID = '{フォルダID}'; function creatSS() { var idSS = SpreadsheetApp.create("新規SS").getId(); var fileSS = DriveApp.getFileById(idSS); var folderTarget = DriveApp.getFolderById(FOLDER_ID); folderTarget.addFile(fileSS); DriveApp.getRootFolder().removeFile(fileSS); }
これで、ルートフォルダに作成されたスプレッドシートが指定のフォルダに移動されるはずです。
つまり、結果として「新規SS」は指定のフォルダに作成されたのと同義になります。
まとめ
以上、Google Apps ScriptでGoogleドライブの指定のフォルダにファイルを追加する方法、削除する方法についてお伝えしました。
addFileメソッドと、removeFileメソッドは使い方が類似していますので、合わせてマスター頂ければと思います。
これで結果として、任意のフォルダにスプレッドシートを作成することとなりました。
かなり使用頻度が高いテクニックだと思いますので、どうぞご活用下さいね!