[GAS] Google AppsScript에서 신고 자료 정기 자동 복제
2832 단어 GoogleAppsScriptslackbot
매주 "지난주 자료를 복사하여 날짜 폴더를 만들고 이름을 바꾸고 이동"같은 운용을 하고 있는 주보 작성을 자동화했다. 를 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);
}
감상
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);
}
@here
통지는 이것으로 할 수 있습니까? 참고
선인의 지혜에 감사드립니다
Google Apps Script를 사용하여 정기적으로 실행되는 cron 만들기
GoogleAppsScript Reference
Google Apps Script를 사용하여 라이브러리 없이 Slack에 Google 사이트 변경 알림 게시
Reference
이 문제에 관하여([GAS] Google AppsScript에서 신고 자료 정기 자동 복제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hanahiro_aze/items/4762635643e1d3c7b300
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([GAS] Google AppsScript에서 신고 자료 정기 자동 복제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hanahiro_aze/items/4762635643e1d3c7b300텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)