Last active
May 17, 2018 17:13
-
-
Save clarinet758/b78a823632b7a16c0b9ed7e6e9b02222 to your computer and use it in GitHub Desktop.
カレンダー支援gas
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Original data was created by 冬木 照 | |
//ver.1.0.0 | |
// -> | |
//modified by clarinet758 | |
//ver.1.30 | |
//excelで言うところのBookがSpreadsheetなのは直感的ではなくて、(付いていけてない脳が)本当に糞で辛い | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var ad = ss.getSheetByName('管理用'); //管理用シート名 | |
var sc = ss.getSheetByName('入力'); //入力シート名 | |
var rSt = 5; //入力シートの開始行 | |
var cEn = 7; //入力シートの最終列 | |
var cName = ad.getRange(1,2).getValues(); //本番カレンダー名 | |
var pName = ad.getRange(2,2).getValues(); //previewカレンダー名 | |
function AddPreview() { | |
var c = CalendarApp.getCalendarById(pName); | |
var events = c.getEvents(new Date(2015, 1 ,1), new Date(2020, 12, 31)); | |
for(var n=0; n<events.length; n++){ | |
events[n].deleteEvent(); | |
} | |
AddYotei(false); | |
} | |
function AddHot() { | |
AddYotei(true); | |
} | |
function AddYotei(f) { | |
var flag = f; | |
if (flag === true) { | |
var cal = cName; | |
} else { | |
var cal = pName; | |
} | |
var lastRow = sc.getLastRow(); | |
var con = sc.getRange(rSt, 1, lastRow, cEn).getValues(); //2次元配列で入力シートの内容を取得 | |
for (i=0; i<=lastRow-5; i++) { | |
var title = con[i][0]; //タイトル | |
var des = con[i][1]; //備考 | |
var st = con[i][2], en = con[i][3]; //日時 | |
var lp = con[i][4]; //話数 | |
var site = con[i][5]; | |
var x = con[i][6]; | |
var type = 1; | |
var jump = 2; | |
var chk = 0; | |
if (x === null || x === 0) { | |
type = 1; | |
} else if (x === 1) { | |
type = 2; | |
} else if (x === 2) { | |
type = 3; | |
jump = 4; | |
} else if (x === 3) { | |
type = 4; | |
jump = 2; | |
} else { | |
type = 1; | |
} | |
//話数の分だけ追加 | |
if (type === 1 || type === 2) { | |
for (j=0; j<lp; j++) { | |
CalendarApp.getCalendarById(cal).createEvent(title, st, en, {description:des, location:site}); | |
st.setDate(st.getDate()+(7*type)); | |
en.setDate(en.getDate()+(7*type)); | |
} | |
} else { | |
for (j=0; j<lp; j++) { | |
CalendarApp.getCalendarById(cal).createEvent(title, st, en, {description:des, location:site}); | |
for (k=0; k<jump; k++) { | |
st.setDate(st.getDate()+7); | |
en.setDate(en.getDate()+7); | |
chk = st.getDate(); | |
if (chk > 28) {//29日以降の第5週の日付は余分に週加算 | |
st.setDate(st.getDate()+7); | |
en.setDate(en.getDate()+7); | |
} | |
} | |
} | |
} | |
} | |
//Browser.msgBox(cName); //print デバッグ用 | |
if (flag === true) { | |
AllClear(); //反映させたらリストはクリアする | |
} | |
} | |
function getTitle() { | |
ad.getRange(3, 6, 100, 6).clearContent(); | |
var y = ad.getRange(1,5).getValues(), k = ad.getRange(2,5).getValues(); | |
var u = "http://api.moemoe.tokyo/anime/v1/master/" + y +"/" +k; | |
var response = UrlFetchApp.fetch(u); | |
var json=JSON.parse(response.getContentText()); | |
var p = json.length; | |
for (i=0;i<p;i++) { | |
ad.getRange(3+i,6).setValue(json[i]["title"]); | |
} | |
} | |
function AllClear() { | |
sc.getRange(rSt, 1, sc.getLastRow() + 1, sc.getLastColumn()).clearContent(); | |
} | |
function onOpen() { | |
var subMenus = []; | |
subMenus.push({name: 'お試し作成', functionName: 'AddPreview'}); | |
subMenus.push({name: '本番作成', functionName: 'AddHot'}); | |
subMenus.push({name: '入力リストをクリア', functionName: 'AllClear'}); | |
subMenus.push({name: 'アニメ取得', functionName: 'getTitle'}); | |
ss.addMenu('自動処理', subMenus); | |
} | |
function test() { | |
//ad.getRange(3, 6, 100, 6).clearContent(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
jsを育てるイメージで更新していきましょう!!!