ScriptArts

好きな時に好きなことをやるサークル

GAS【Google Apps Scripts】を少し触った

お久しぶりです。マジカルミライ2020当選したのに、COVID-19のせいでリセットされてしまったなれんじです。

f:id:narange:20200730140626p:plain
Google Apps Scripts

目次

マジカルミライ?

毎年夏に東京(基本幕張メッセ)と大阪で開催されているVOCALOIDによるバーチャルライブです。 仮想世界と現実世界がつながった感じの感動するライブです。

というのは前置き。

GAS?

Googleが提供している「Google Apps Scripts」というものでGoogleが提供しているサービスと連携させて様々なカスタマイズした動きを付与できるプログラムみたいなものです。 今回は主にGoogleDriveのフォルダ/ファイルを自動的に動かすプログラムを書いてみました。

GASの使い方

まずはGoogleDriveを開きます。その後何もない部分で右クリックをし、「空白のスプレッドシート」を選択します。

f:id:narange:20200730135242p:plain
まずスプレッドシートを作成

するとExcelのようなスプレッドシートの画面が表示されるので画面上部の「ツール」から「スクリプト エディタ」を選択します。

f:id:narange:20200730135543p:plain
スクリプトエディタを選択

そして表示されたプログラムを書く画面がGASを記述する画面です。 ここに様々な処理を記述していきます。

仕様

とあるフォルダAにアップロードされたファイルを自動的にフォルダBに移動(つまり、コピーの後フォルダA内のファイルは削除)させるプログラムです。

function test() {
  while(true){
    var sourceId = ""; //移動元のフォルダID
    var sourceFolder = DriveApp.getFolderById(sourceId);
    var destinationId = ""; //移動先のフォルダID
    var destinationFolder = DriveApp.getFolderById(destinationId);
    var arr_id = [];

    for(var i = 0; sourceFolder.getFiles().hasNext(); i++) {
      var file = sourceFolder.getFiles().next();
      arr_id[i] = file.getId();
      destinationFolder.addFile(DriveApp.getFileById(arr_id[i])); 
      sourceFolder.removeFile(DriveApp.getFileById(arr_id[i])); 
    }
  }
}

さて、ここで「フォルダID」ですが、GoogleDriveで各フォルダにアクセスをするとブラウザ上部のURL欄にhttps://drive.google.com/drive/folders/-----------------と表示されています。 この後部の「---------------------」がフォルダIDです。

実行

画面上部にある「実行」から「関数を実行」を選択し「test」(これは先ほどのプログラムの関数名です。適宜変えていただいて構いませんが、一致させてください)を選択します。

f:id:narange:20200730135823p:plain
関数を実行を選択

するとプログラムが実行されます。もしエラーが発生すると画面上部に赤く理由ともに表示されます。

初回の場合認証エラーが発生する可能性がありますが、許可をしてください。

もし、認証ができませんでした、という画面が表示された場合、その画面の下部にある詳細を表示から「開く」をクリックしてください。

完成

実行処理が走っている間は自動的に移動が随時リアルタイムで行われていきます。しかしランタイムの上限が設けられているため連続的に無制限に走らせることはできません。

以上です、簡素ですが多分動きます。