グーグルAppsスクリプトのDocsList廃止について

   

ネットショップの運用で使っているGoogleのスプレッドシートを
毎日自動で Google Apps Script でバックアップしていたのですが、
2015年4月22日からエラーのメールが届いてバックアップされなくなっていました。

ReferenceError: 「DocsList」が定義されていません。(行 3、ファイル「コード」)

ググってみたところ、DocsList クラスが4月21日に廃止になったらしく、
DriveApp クラスに変更する必要がありました。

単純に DocsList を DriveApp に変更したところ、

backupフォルダへ移動するところで、(gmailと同じで、ラベルをつけたり外したりしている)
DriveApp クラスには getFolder メソッドがない

というエラーになってしまいました。

そこで、ちょっとググッって新しく書き直してみたので、シェアします。

 

function backup() {  
  // ファイルをコピー(ファイル名の後ろに年月日を追加)
  var file = DriveApp.getFileById('ファイルID');
  var fileCopied = file.makeCopy(
      file.getName()+'-'+Utilities.formatDate(new Date(), 'JST', 'yyyy-MM-dd')
  );   
 
  // 指定したフォルダをつける
  var folder = DriveApp.getFolderById('フォルダID');
  folder.addFile(fileCopied);
  // ルートフォルダを外す
  DriveApp.getRootFolder().removeFile(fileCopied);
}

//スプレッドシートにマクロボタンを追加
function onOpen() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet();
    var entries = [
        {
            name : "定期ばっくあっぷ",
            functionName : "backup"
        }
        ];
    sheet.addMenu("backup", entries);
};

ファイルIDとかフォルダIDというのは、
スプレッドシートやフォルダを開いたときに
ブラウザのURLとして表示されているめちゃくちゃな文字列のことです。

ファイルなら、https://docs.google.com/spreadsheets/d/ファイルID/edit#gid=xxxxx

フォルダーなら、https://drive.google.com/drive/folders/フォルダID

グーグルドライブのフォルダは、gmailと同じで、ラベルをつけたり外したりしているので、
複数のフォルダがついているファイルを片方のフォルダで削除すると両方とも消えることになります。

今まで知らなかったので、なんかおかしいと思ってた挙動が腑に落ちました。

これ、結構知らない人多いですよね?

 お問い合わせはこちら

オススメ

 - 未分類