# Google Sheet Script
1. Go to Google Sheet
2. Click "Script editor" Into script page.
![](https://i.imgur.com/Td1a02Q.png)
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.
![](https://i.imgur.com/UJsTnHO.png)
5. You can see your tigger on this page and then Click "Add Trigger" to add new one.
![](https://i.imgur.com/ql35MDl.png)
6. Trigger setting
![](https://i.imgur.com/T3R0xhn.png)
7. And your can edit your tigger
![](https://i.imgur.com/Z6fR7ih.png)
![](https://i.imgur.com/L0VnkN0.png)
```
# 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"功能列表
*/
```