매일 업데이트되는 Google 스프레드시트 값을 정기적으로 다른 시트에 복사하는 방법
배경
직원의 이동 관리를 스프레드 시트로 관리하고 있으며,
웹 사이트상에 종업원의 출근 유무를 출력하게 되었다.
종업원 수가 많아 2 개월 앞까지 시프트가 짜여져 있습니다.
사이트에 출력하는 것은 최근 5일만.
전회 이하의 기사로 이끼한 적도 있다.
GoogleAppsScript (GAS)에서 스프레드 시트 값을 얻었을 때 빠졌습니다.
필요한 데이터를 매일 별도 시트로 추출하여 추출 결과를 jsonp 형식으로 전달하는 설계로 하였다.
전달은 전회 기사에 있는 처리를 유용. Web 사이트에 출력하는 처리는 JavaScript로 고리고리 썼다.
본 기사는 데이터를 매일 다른 시트에 추출하는 처리만을 기재.
처리 이미지
매일 특정 조건에서 시트에서 데이터를 추출하고 다른 시트로 복사합니다.
필요한 최소 기능
· 같은 이름의 시트가 존재하지 않으면 작성.
→누군가의 손에 의해 복사처 시트가 삭제되어도 문제 없게 한다.
・현재일로부터 5일 후까지 추출을 대상으로 한다.
추출 처리
function weekCp() {
//コピー先シート存在確認
var sheet = set_sheet("直近5日");
//コピー先シートクリア
sheet.clearContents();
//コピー元シートのデータを二次元配列で一括取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var original = spreadsheet.getSheetByName('シート1');
var var1 = original.getDataRange().getValues();
//現在日付を取得
var date = new Date();
var date_D = new Date(date.getFullYear(),date.getMonth(),date.getDate(),0,0,0);
//5日後の日付を取得
var date_range = new Date(date.getFullYear(),date.getMonth(),date.getDate(),0,0,0);
date_range.setDate(date_range.getDate() + 4);
//フィルタ後の配列を初期化 ヘッダー情報は固定なため、ベタ
var data = [
["日付", "時間", "場所", "状況", "担当者"]
];
for(var i=1; i < var1.length; i++){
//当日以前のデータは対象外なため最初に落とす
if(var1[i][0] >= date_D) {
//それが5日の範囲内か
if(var1[i][0] <= date_range) {
data.push(var1[i]);
}
}
}
//データの書き込み
//横(行)
var lastColumn = data[1].length
//縦(列)
var lastRow = data.length
//開始行 開始列 終了行 終了列
sheet.getRange(1, 1, lastRow, lastColumn).setValues(data)
}
//同じ名前のシートがなければ作成
function set_sheet(name) {
var sheet = SpreadsheetApp.getActive().getSheetByName(name)
if(sheet)
return sheet
sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
sheet.setName(name);
return sheet;
}
트리거
매일 0시에 기동하도록 한다.
★[편집]→→[현재 프로젝트 트리거]를 선택
★ 트리거 추가
이상으로 매일 0시 이후에 마음대로 기동해 준다.
결론
여명 3개월은 슬프네요.
Reference
이 문제에 관하여(매일 업데이트되는 Google 스프레드시트 값을 정기적으로 다른 시트에 복사하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kis3_/items/5b87568ada63a5d97184텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)