[GAS] Google AppsScript에서 신고 자료 정기 자동 복제

손님에게 보고하는 자료를 정기적으로 만들거나 하는 것 힘들군요.
매주 "지난주 자료를 복사하여 날짜 폴더를 만들고 이름을 바꾸고 이동"같은 운용을 하고 있는 주보 작성을 자동화했다. 를 slack에게 통지하도록 했을 때의 메모입니다.

코드


function makeFolder() {
  Logger.log("週報作っちゃうぞ!");
  var success = false;
  // 「週報」フォルダ
  var rootFolder = DriveApp.getFolderById("your drive");
  // 「週報」配下のフォルダ
  var folders = rootFolder.getFolders();

  while (folders.hasNext()) {
    var folder = folders.next();
    var folderDateNum = Number(folder.getName());
    var todayNum = Number(Utilities. formatDate(new Date(), "Asia/Tokyo", "yyyyMMdd"));   
    // 今日の分か未来分まで作成済み
    if ((todayNum-folderDateNum) <= 0) {
        Logger.log("作成済みです");
      break;
    } 

    // ここに来るってことは、まだ今週分は作成していないはず。
    var todayFolder = rootFolder.createFolder(todayNum);
    // 先週のフォルダ内にあるファイル全部取得
    var files = folder.getFiles();
    // ファイルを取得
    while (files.hasNext()) {
      var file = files.next();
      // 週報以外をスキップ
      if (file.getName() == "進捗報告_" + folderDateNum) {
        break;
      }
    }

    // 今週分作成
    var todayFile = file.makeCopy("進捗報告_" + todayNum);
    todayFolder.addFile(todayFile);
    success = true;
    // 消さないとコピーが残っちゃうので削除
    folder.removeFile(todayFile);
    break;
  }
  // slackに通知
  postMessage(success, todayFile.getUrl());
  Logger.log("作成終了");
}

// Slackに通知
function postMessage(success, url) {
  var token = "your token"; // slackトークン
  var channel = "shuhou"; //投稿先チャンネル名
  var username = "週報bot"; //BOTの名前
  var text =  "週報の作成に失敗しちゃいました。ごめんなさい。今日は自分でコピーしてね!";

  if (success) {
    text = "週報ができたよ。" + url;
  }

  UrlFetchApp.fetch("https://slack.com/api/chat.postMessage?token=" + token + "&channel=%23" + channel + "&username=" + username + "&text=" + text);
}

감상


  • 처음으로 GAS를 만졌습니다만, javascript라이크로 직관적으로 조작할 수 있어, 하기 쉬웠다.
  • 통지 메시지라든지는 좀 더 생각하는 편이 좋을 것 같습니다만, 일단 이것으로 운용할 수 있기 때문에, 지금은 이대로 하고 있습니다.
  • @here 통지는 이것으로 할 수 있습니까?

  • 참고



    선인의 지혜에 감사드립니다
    Google Apps Script를 사용하여 정기적으로 실행되는 cron 만들기
    GoogleAppsScript Reference
    Google Apps Script를 사용하여 라이브러리 없이 Slack에 Google 사이트 변경 알림 게시

    좋은 웹페이지 즐겨찾기