8 月 24 號,Google 試算表一口氣推出了好幾項
新功能,有
「已命名函式(Named Functions)」、LAMBDA(跟相關函式)、XLOOKUP 還有 XMATCH,讓你在使用 Google 試算表時有更多彈性!(
雖然這更新有點追著隔壁 Excel 跑的味道)
這次我想介紹的功能叫「已命名函式」。「已命名函式」功能可以讓你設計自己的函式,還可以把它分享給別人使用、更可以把它匯入到其他試算表,化繁為簡,讓你的工作效率大大提升。
如果不用這個功能,你可能得寫這麼長的函式才會得到那張 QR Code:
=IMAGE("https://chart.googleapis.com/chart?" & "chs=" & 300 & "x" & 300 & "&cht=qr&chl=" & ENCODEURL("https://vocus.cc/user/@mrsheet"))
現在變成短短一行了!
更方便的是,你把這個試算表分享給別人編輯的話,對方也能使用這個新函式;也可以用等等介紹的匯入功能,可以直接把新函式「安裝」到別的試算表檔案。
使用場景
綜合這些特性,我想到三個「已命名函式」可應用的場景給你參考。
一、讓長函式縮短,變成好管理的短函式
用了「已命名函式」,麻煩的函式只要寫一遍。就算之後要修改編輯,也相對簡單,改好後可以一鍵更新,對現在編輯的試算表生效。
二、讓自創的函式分享給更多人利用
假設你已經出師,寫了一些自創的函式,你不妨可以做一個「已命名函式庫」,開放大家自由利用,他們就可以用你的函式,加速工作效率!他們完全不需要知道你的函式是怎麼寫的,讓技術共享的難度大大降低。
三、帶給試算表世界更多可能性
或許之後有更多神人分享他們設計的函式,開放給大家使用!
我把官方的說明文件放
這邊,有興趣的話你可以瞧瞧!我也會實際操作一次,介紹這個新功能給你看。這次會盡可能全面介紹這個新功能,篇幅會有點長,你可以利用左手邊的「章節目錄」跳到你想了解的地方喔。
製作步驟
來製作一個可以更方便
抓取方格子追蹤人數的函式好了。如果不用「已命名函式」功能,我們可能得寫:
=IMPORTXML("https://vocus.cc/user/602bf35efd897800019eefb5", "//*[@id='__next']/div[1]/div[4]/div[1]/div[1]/div[2]/div[4]/ul/li[5]/div", "en")
超長!如果可以寫下面一行短短的話,那該有多好。
=方格子個人追蹤("網址")
怎麼做?來看看吧!
一、測試函式運作
首先,打開一個新的試算表,在某個儲存格寫上剛剛那串,先確認函式是否能正常運作:
=IMPORTXML("https://vocus.cc/user/602bf35efd897800019eefb5", "//*[@id='__next']/div[1]/div[4]/div[1]/div[1]/div[2]/div[4]/ul/li[5]/div", "en")
按下 Enter,結果:
OK,正常!那我們就可以準備把它打包,製作「已命名函式」了。
二、設定「已命名函式」功能
接下來,在工具列點選「資料」>「已命名函式」:
你會到右手邊有一個窗格冒出來:
選取左下角的「新增函式」,之後就會出現「新增已命名函式」的編輯窗格了。
我們一欄一欄看這邊要填什麼東西。
函式名稱:填入這個函式的名字。中英文都可以,輸入英文的話會自動轉成大寫。你可以取「方格子個人追蹤」、「VOCUS_PROFILECOUNT」或是任何方便記憶的名字。取名有幾個限制:
- 不可以跟 Google 試算表已有的函式撞名
- 不可以取 TRUE 或 FALSE
- 不可以用 A1 或 R1C1 語法(像是 A1、B2、RC[-1] 等等)
- 不可以用數字當開頭
- 不可以有空格、不可以有特殊字元(底線除外)
- 名稱長度不能超過 255 個字元
那我們這次就取「方格子個人追蹤」這個名字吧:
函式說明:給使用者看的說明文字,什麼都可以,「取得方格子作者個人檔案頁面的追蹤人數」、「Getting the follower counts on Vocus Profile Page」、「寫完這篇文要去吃熱炒囉」都可以。來輸入一下:
引數預留位置:給使用者輸入資料的預留位置。這邊的「引數」是什麼呢?打個比方,在 VLOOKUP 函式,我們有四個引數要給試算表:
=VLOOKUP(關鍵字, 範圍, 索引, [已排序])
例如:
=VLOOKUP("秋天", A:E, 2, FALSE)
這邊的關鍵字、範圍、索引、已排序就是引數了。
至於引數要寫什麼、又要怎麼寫,取決你想設計的樣子。舉例來說,我們回頭看剛剛寫的那一長串:
=IMPORTXML(
"https://vocus.cc/user/602bf35efd897800019eefb5",
"//*[@id='__next']/div[1]/div[4]/div[1]/div[1]/div[2]/div[4]/ul/li[5]/div",
"en")
IMPORTXML 的函式本來有三個引數,有網址、XPath 路徑查詢和語言代碼,那麼既然 XPath 路徑查詢和語言代碼都可以是固定不變的值,我希望使用者只要提供網址就好,這麼一來,等等只需要一個「網址」的引數即可。
這邊的引數預留位置可以用中文寫、也可以用英文寫。但是到截稿日為止(9 月 15 號),因為 Google 試算表的 bug 的關係,如果用中文的引數等等會有點問題,所以我先用英文示範。設定引數的限制和剛剛取函式的名稱一樣,別寫錯囉!
我們就先在那個欄位填入「url」、按下 Enter,看起來就會像這樣:
公式定義:定義新函式怎麼運作。我們把剛剛在儲存格寫好的函式複製、貼上去:
把那串 https://... 的網址替換成剛剛定義的「url」:
OK!設定完畢了,回顧一下:
三、提供引數說明
我們快做完了!按下「繼續」,我們進到設計函式的第二步。你會看到這個窗格:
你可以在這進一步提供引數的說明,讓使用者可以了解怎麼使用你設計的函式。舉例來說,希望大家在輸入網址的時候,要記得在網址前後加上雙引號,並提供一個填寫的範例作為參考。那麼,你就可以在這邊的欄位寫:
引數說明:輸入方格子作者個人頁面的網址,前後要有雙引號包覆。
引數範例:"https://vocus.cc/user/602bf35efd897800019eefb5"
像這樣:
按下右下角的建立,就完成囉!
我們來試試看,在隨便一個儲存格寫:
=方格子個人追蹤(
哇,真的變成一個函式啦!剛剛定義的函式說明、引數說明也有好好出現。
我們接著填入網址。假設我們這次來找
方格子官方的追蹤數有多少:
"https://vocus.cc/user/5a702897fd89780001f9b44b"
就這樣完成囉!
四、更新或移除函式
如果你要更新已命名函式,一樣可以回到工具列,按「資料」 >「已命名函式」,就會回到剛剛的窗格。函式的右手邊,有三個點的圖案可以點,會出現編輯或移除:
按下編輯的話,就會回到剛剛的步驟,就可以更新函式的設計;按下移除的話,當然就會讓這新函式在試算表上消失囉。
分享試算表給別人時,新函式也可以用嗎?
可以!只要開啟試算表的編輯權限給別人,他們也可以使用你設計的函式喔!按下 Google 試算表畫面右上角的「分享」,新增對方的 Gmail 帳號或群組、設定權限為「編輯者」即可:
新函式怎麼匯入到別的試算表?
先打開你希望匯入的試算表,到工具列 >「資料」>「已命名函式」,出現剛剛的窗格後,按下右下角的「匯入函式」。
這時會出現可以選擇檔案的視窗:
你可以從「我的雲端硬碟」、「與我共同的項目」、「近期存取」搜尋剛剛的檔案。找到了之後,點選檔案,按下「選取」。接下來會再出現這個視窗:
這邊會出現原本的試算表已經有的「已命名函式」,你可以勾選函式左邊的方塊選擇要匯入的函式,或全部匯入。
不過,匯入的時候,你有可能會看到這種訊息:
以這次的例子來說,是因為 IMPORTXML 會匯入外部網站的資料,Google 試算表擔心你的資安,所以顯示這個訊息提醒你。你如果充分了解這函式的風險,可以繼續按「匯入」或「全部匯入」繼續匯入過程(IMPORTXML 只會匯入資料、應該是不會把資料匯出去給別人就是)。
這樣就完成囉!你就可以在試算表使用新函式了。
要注意到,這個匯入是一次性的。如果原本的試算表那邊,函式有任何更新,在其他的試算表不會跟著更新喔。
複製試算表的時候,新函式也會過去嗎?
會的!經測試過也沒問題。你可以把含有新函式的試算表,直接複製到你的雲端硬碟,這樣新函式也會跟著過去囉。
最後呢,我想先從自己開始,分享幾個我設計的函式給大家用。歡迎到這個
試算表取用,如果你有什麼函式的新點子也歡迎跟我分享,我可以試著設計看看:
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
我是喜特先生,Mr. Sheet,我們下個教學見!