Gg /自訂函數產生Google calendar render link

在Excel VBA可以自訂函數

Google Sheets 也是可以自訂函數

因此,嘗試將VBA的程式碼改為 Google Apps Script的格式

 

需要注意的地方仍然是字串的連結

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * Google calendar render link
 * 
 * @param {string} render   事件名稱
 * @param {string} datatime 起訖時間,時間格式為 YYYYMMDDTHHMMSS/YYYYMMDDTHHMMSS
 * @param {string} desc     活動描述,使用 %0A 作為換行
 * @param {string} location 活動地點
 * @return render link 超連結Html標籤
 * @customfunction
 */
function renderlink(render, datatime, desc, location) {

//var result= "<a target='" + "_blank'" + " href='" + "https://www.google.com/calendar/event?action=TEMPLATE&text=" + render + "&dates=" + datatime + "&details=" + desc + "&location=" + location + "&trp=false'" + ">新增至行事曆</a>";

var result= "<a target='_blank' href='https://www.google.com/calendar/event?action=TEMPLATE&text=" + render + "&dates=" + datatime + "&details=" + desc + "&location=" + location + "&trp=false'>新增至行事曆</a>";

//var result= "<a target=\"" + "_blank\"" + "href=\"https://www.google.com/calendar/event?action=TEMPLATE&text=" + render + "&dates=" + datatime + "&details=" + desc + "&location=" + location + "&trp=false\">新增至行事曆</a>";

Logger.log(result);
return  result;
  
}

 

字串的連結符號是 +

可以有兩種方式進行字串連結

1.將超連結需要的 ” 改成 ‘ ,然後再處理變數的連結即可

var result= "<a target='" + "_blank'" + " href='" + "https://www.google.com/calendar/event?action=TEMPLATE&text=" + render + "&dates=" + datatime + "&details=" + desc + "&location=" + location + "&trp=false'" + ">新增至行事曆</a>" ;

可以再精簡成

var result= "<a target='_blank' href='https://www.google.com/calendar/event?action=TEMPLATE&text=" + render + "&dates=" + datatime + "&details=" + desc + "&location=" + location + "&trp=false'>新增至行事曆</a>";

2.另一種方式是用跳脫字元 \

var result= "<a target=\"" + "_blank\" href=\"https://www.google.com/calendar/event?action=TEMPLATE&text=" + render + "&dates=" + datatime + "&details=" + desc + "&location=" + location + "&trp=false\">新增至行事曆</a>";

整體的函示便是從試算表接收傳來所需的參數

進行字串連結之後,再回傳數值

function renderlink(render, datatime, desc, location) { var result=.....return result;}

 

自訂函數也可以利用JSDoc格式設定程式的說明內容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/**
 * Google calendar render link
 * 
 * @param {string} render   事件名稱
 * @param {string} datatime 起訖時間,時間格式為 YYYYMMDDTHHMMSS/YYYYMMDDTHHMMSS
 * @param {string} desc     活動描述,使用 %0A 作為換行
 * @param {string} location 活動地點
 * @return render link 超連結Html標籤
 * @customfunction
 */