LoginSignup
5
6

More than 5 years have passed since last update.

Google Driveの定例資料を自動でコピーするスクリプト

Last updated at Posted at 2016-02-29

定例ミーティングの資料とか毎週同じフォーマット使うことって多いですよね?
でも、毎週自分でコピーするとかだるいじゃないですか・・・
「今週の資料まだっすか?」とか。
勝手にコピーしなよ!とか思うわけですよ。

スクリプト

以下のスクリプトを自分のドライブに保存してスケジュール実行しておいて下さい。
フォルダIDはフォルダのURLの末尾
タイトルのフォーマットを設定して下さい。
定例の曜日を指定して下さい
※ 初回実行時に認証入ると思うのでテスト実行しておくと良いです

copydocument.gs
var outputFile;
var result;

function copyReport(){
  var titleFormat = "資料名のフォーマット yyyyMMdd";
  var folder = DriveApp.getFolderById("資料フォルダのULRの末尾の英数字を入れる");
//  folder = ""; // test folderとか適当に作ってやるといいです
  var weeknum = 5; // 定例の日付(0=日曜日、 なので5=金曜日)

  // 先週のファイルを取得
  var date_last = new Date();
  var over_days = date_last.getDay() - weeknum ;
  over_days = over_days < 0 ? 7 + over_days : over_days;
  date_last.setDate(date_last.getDate() - over_days);

  var date_new = new Date();
  date_new.setDate(date_last.getDate() + 7);

  var filename_last = Utilities.formatDate(date_last,"GMT+09:00",titleFormat);
  var filename_new  = Utilities.formatDate(date_new,"GMT+09:00",titleFormat);
  Logger.log(filename_last + " -> " + filename_new);

  var files = folder.getFilesByName(filename_new);
  var file_new = (files.hasNext()) ? files.next() : undefined;
  if (file_new != undefined) {
    Logger.log("今週のファイルがすでに存在します。");
    return; 
  }

  files = folder.getFilesByName(filename_last);
  var file_last = (files.hasNext()) ? files.next() : undefined;
  if (file_last == undefined) {
    Logger.log("先週のファイルが見つかりません。");
    return; 
  }

  file_new = file_last.makeCopy(filename_new, folder);

  var doc_new = DocumentApp.openById(file_new.getId());

  // 本文の置換
  // 本文中の日付を置き換える
  doc_new.getBody().replaceText(
    Utilities.formatDate(date_last, "GMT+09:00", "yyyyMMdd"),
    Utilities.formatDate(date_new,  "GMT+09:00", "yyyyMMdd")
  );

  // 他にもルールがあればreplaceTextを追加していく

}

注意

  • 金曜日以外テストしてないですすみません。
  • 実施日にスクリプト実行すると来週分作りますので、前日までに資料は用意しましょう
5
6
0

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
5
6