Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //========================================//
- //
- // グローバル変数
- //
- //========================================//
- //スプレッドシートのURL
- var myurl = "https://docs.google.com/spreadsheets/d/1Yynlwa-JmTU9Pz0RHduFlLnueb3KKjwAs0JYOau2mao/edit"
- var ss = SpreadsheetApp.openByUrl(myurl);
- var sheet = ss.getSheetByName("summary1");
- var lastrow = sheet.getLastRow();
- var lastcol = sheet.getLastColumn();
- var dary = sheet.getDataRange().getValues();
- //========================================//
- //
- // メイン関数
- //
- //========================================//
- function mainFunction() {
- var kr7d5t = KoteRoster(7,5);//7日間で5日
- var kr14d10t = KoteRoster(14,10);//14日間で10日
- var kr21d15t = KoteRoster(21,15);//21日間で15日
- var kr28d20t = KoteRoster(28,20);//28日間で20日
- var kr42d30t = KoteRoster(42,30);//42日間で30日
- var kr56d40t = KoteRoster(56,40);//56日間で40日
- /* TIPS
- //1次元配列を2次元配列に変換する
- var output = dammy.map(function (elm){return [elm];});
- */
- //ヘッダー
- var hed = [["<h3>直近1週間(過去7日間)に合計5日以上書き込んでいるコテ</h3>",
- "<h3>直近2週間(過去14日間)に合計10日以上書き込んでいるコテ</h3>",
- "<h3>直近3週間(過去21日間)に合計15日以上書き込んでいるコテ</h3>",
- "<h3>直近4週間(過去28日間)に合計20日以上書き込んでいるコテ</h3>",
- "<h3>直近6週間(過去42日間)に合計30日以上書き込んでいるコテ</h3>",
- "<h3>直近8週間(過去56日間)に合計40日以上書き込んでいるコテ</h3>"]];
- //結果格納用スプレッドシートのURL
- var myurl = "https://docs.google.com/spreadsheets/d/1OzGco4-5UZW22Xy8ITgOANnGdml0fwVg7s82Y-e8qoE/edit"
- var ss = SpreadsheetApp.openByUrl(myurl);
- var sheet = ss.getSheetByName("res");
- //結果をスプレッドシートへ書き込む
- sheet.clear();
- sheet.getRange(1, 1, 1, 6).setValues(hed);
- sheet.getRange(2, 1, kr7d5t.length, 1).setValues(kr7d5t.map(function(elm){return [elm];}) );
- sheet.getRange(2, 2, kr14d10t.length,1).setValues(kr14d10t.map(function(elm){return [elm];}) );
- sheet.getRange(2, 3, kr21d15t.length,1).setValues(kr21d15t.map(function(elm){return [elm];}) );
- sheet.getRange(2, 4, kr28d20t.length,1).setValues(kr28d20t.map(function(elm){return [elm];}) );
- sheet.getRange(2, 5, kr42d30t.length,1).setValues(kr42d30t.map(function(elm){return [elm];}) );
- sheet.getRange(2, 6, kr56d40t.length,1).setValues(kr56d40t.map(function(elm){return [elm];}) );
- }
- //========================================//
- //
- // 関数:KoteRoster
- //
- //========================================//
- function KoteRoster(Ndays,Mtimes){
- var N = Ndays;// N日間で
- var M = Mtimes;// M回出現
- //N日間に出現したすべてのコテハンを集計する
- var temp = [];
- for(j = lastcol - N ; j < lastcol; j++){
- for(i = 1; i < lastrow; i++){
- if(dary[i][j] != ""){//データなしの要素は除外
- temp.push( dary[i][j] );
- }
- }
- }
- //集計結果をソートする
- temp.sort();
- //集計結果から重複する要素を取り除く
- var temp_uniq = temp.filter(function (x, ix, self) { return self.indexOf(x) === ix;});
- //重複要素除去済みの各要素が集計結果中で何回出現したかカウントする
- var temp_uniq_cnt = temp_uniq.map(function(elU){return (temp.filter(function(elA){return elA == elU;}) ).length;});
- //M回以上出現したコテハンのみをoutput変数に格納し、関数の戻り値とする
- var output = [];
- var temp_uniq_length = temp_uniq.length;
- for(i = 0; i < temp_uniq_length ; i++){
- if( temp_uniq_cnt[i] >= M ){
- output.push( temp_uniq[i] );
- }
- }
- return output;
- }
Advertisement
Add Comment
Please, Sign In to add comment