# Google Sheet Script
1. Go to Google Sheet
2. Click "Script editor" Into script page.

3. You can use Javascript on script page.
```
# See more on google app script
https://developers.google.com/apps-script/reference/spreadsheet
```
4. If you finished your function and you can trigger it by trigger service.

5. You can see your tigger on this page and then Click "Add Trigger" to add new one.

6. Trigger setting

7. And your can edit your tigger


```
# See more on Jenkins auto report!
https://script.google.com/a/exosite.com/d/1KxjsExAAQnhCXb1fcam4MJu9ptJVVZGln1JHmnkAii7OJflMxBH9xK1o/edit?mid=ACjPJvEu3N8dX5oyK6bF2GlcQ9Pc7jxb2GhKQsIYLTW9WyA8wMIOpz9NSXa-LDF1Pg8jnEmgX28AOd2XL2bfJ_CUhKPdMztiyH6RI2WjHUtbDQyUxTDTfuwgtcX3JfVRYDrl5p4FhDJNiNU&uiv=2
/*
# HTML
HTML + JS
## datePickerViaCreated.html
一個讓使用者選擇日期區間的UI,會在JS裡呼叫setBugTimeWithSpecificCreateTime這個Function,
選擇的區間會用來Filiter ticekt的created time
## datePickerViaResolved.html
一個讓使用者選擇日期區間的UI,會在JS裡呼叫setBugTimeWithSpecificResolvedTime這個Function,
選擇的區間會用來Filiter ticekt的resolved time
## emptyError.html
一個用來顯示錯誤訊息的UI,當"BUG Status"的J2或K2沒有值的時候會顯示
## slackError.html
一個用來顯示錯誤訊息的UI,當嘗試傳送訊息到Slack有錯誤的時候會顯示
--------------------------------------------------------------------------------------------------
# gs
Google apps script,但是跟JavaScript基本上一樣
## autoSetLabelMethod.gs
只要有在regression掛上ticket的QA-Task或Bug一律掛上label,
QA-Task: frombuild#XXXX, Bug: foundin#XXXX
## bugTimeMethod.gs
主要用於更新"BUG Time Spent"這個Tab的Function,
待使用者從UI上選擇日期區間或自訂的JQL後,會將每筆有"foundin#XXX"這個label的Ticket列出來,
並且去比對"Version Time Spent"這個Tab上同一個版本的Start time,
計算出從那版Regression test開始到那張Ticket create, ready for qa, close花了多久的時間
## datetimeMethod.gs
主要放置處理時間相關的Function,例如取得現在的時間或是計算時間等
## deployNoteMethod.gs
主要用於更新"Version Time Spent"這個Tab的Function,
會從deployNote的Sheet裡抓到現在版本的狀態(TESTING, RVERT, or IGNORE)以及開始時間,
之後在REPORT, STOP, or OVER的時候去計算時間並且設定在"Version Time Spent"這個Tab上
## dialogMethod.gs
主要用於放置顯示UI的Function,例如跳出錯誤訊息或讓使用者選擇區間的UI等
## httpMethod.gs
可以略過,目前應該沒有用到
## jiraMethod.gs
主要用於與JIRA有關的Function,例如根據帶進來的JQL取得Ticket list以及將之格式化,或是取得JIRA帳號的Token等
## main.gs
主要用於更新"BUG Status"這個Tab的Function,另外JQL也是放在這份檔案裡
在J2與K2輸入Version及Status後執行main()即會更新這版所發現的新Bug以及過往的舊BUG,
同時也會更新時間在BUG Status
## menuMethod.gs
主要用於與上方"Quick Start"有關的Function
## sheetMethod.gs
主要用於更新"BUG Status"這個Tab的Function,
在main()裡面所call的function通常是出自這裡
## slackMethod.gs
主要用於傳送訊息到Slack的Function,
sendSlack()負責傳送REPORT, STOP, OVER,
sendStartToSlack()負責傳送START,
另外getTodayChecker()會從Jenkins check rotation這個sheet自動抓今天有哪些murano的人需要看Jenkins並且標記他們
* link: Jenkins check rotation: https://tinyurl.com/y5twzcod
## triggerMethod.gs
主要用於定時更新"BUG Status"這個Tab的Function,
每半小時會更新一次這版有沒有Bug以及之前的Bug status
## versionTimeMethod.gs
主要用於更新"BUG Status"及"Version Time Spent"這兩個Tab的Function,
從Jenkins report link取得version等資訊後,更新到這兩個tab裡
--------------------------------------------------------------------------------------------------
# Triggers
從上方的Edit -> Current projects's triggers進入,可以固定時間呼叫某一個Function
## Function: setDeployStatus
每分鐘執行檢查一次,根據deployNote的狀態不同,會設定START, STOP, OVER的時間以及傳送訊息到Slack
## Function: reportJenkinsEverySixOClock
每天晚上約六點二十三分時執行,如果該版Jenkins尚未STOP或OVER便會設定REPORT的時間以及傳送訊息到Slack
## Function: updateBugStatus
每半小時執行一次,更新一次這版有沒有Bug以及之前的Bug status
## Function: setOverStatus
每分鐘執行檢查一次,根據當前版本Jenkins report裡的“Consolidate”tab,如果Total(B3)超過5000並且檢查率100%(L3)便會設定OVER的時間以及傳送訊息到Slack
## Function: onOpen
每次開啟這個Sheet時會執行,將會顯示上方的"Quick Start"功能列表
*/
```