[Obs#51] QuickAdd全攻略(2):腳本撰寫與巨集使用要點
1. Capture 範例1
Capture: Admonition的兩個版本
1.1. Templater API
<%*
let selection = window.getSelection();
let choice = await tp.system.suggester(
[ "✏️ note", " abstract", "ℹ️ info", " tip", "✅ success",
"❓ question", "⚠️ warning", "❌ fail", " bug", " example",
"✍️ quote", " comment", " LOL" ],
[ 0,1,2,3,4,5,6,7,8,9,10,11,12 ]
);
const admonitions = [
["ad-note", "重點"], ["ad-abstract", "摘要"], ["ad-info", "資訊"], ["ad-tip", "技巧"], ["ad-success", "完成"],
["ad-question", "問題"], ["ad-warning", "警告"], ["ad-fail", "失敗"], ["ad-error", "錯誤"], ["ad-example", "範例"],
["ad-quote", "引用"], ["ad-comment", "建議"], ["ad-LOL", "好笑"]
];
admonition = admonitions[choice][0];
title = admonitions[choice][1];
const nl = String.fromCharCode(10);
choice = "```" + admonition + nl +
//"collapse: on" + nl +
"title: " + title + nl + selection + nl +
"```";
//tR += choice;
%>
<% choice %>
1.2. QuicAdd API
‘‘‘js quickadd
//const selection = window.getSelection();
const selection = this.quickAddApi.utility.getSelectedText();
const aTexts = [ "✏️ note", " abstract", "ℹ️ info", " tip", "✅ success",
"❓ question", "⚠️ warning", "❌ fail", " bug", " example",
"✍️ quote", " comment", " LOL" ];
const aValues = [ "0", "1", "2" , "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ];
let choice = await this.quickAddApi.suggester(aTexts, aValues);
//console.log("choice", choice);
const admonitions = [
["ad-note", "重點"], ["ad-abstract", "摘要"], ["ad-info", "資訊"], ["ad-tip", "技巧"], ["ad-success", "完成"],
["ad-question", "問題"], ["ad-warning", "警告"], ["ad-fail", "失敗"], ["ad-error", "錯誤"], ["ad-example", "範例"],
["ad-quote", "引用"], ["ad-comment", "建議"], ["ad-LOL", "好笑"]
];
admonition = admonitions[choice][0];
title = admonitions[choice][1];
// 在腳本裡,換行符號和倒引號不要在字串裡使用,改用String.fromCharCode()才不會出現解析錯誤
const nl = String.fromCharCode(10);
const backQuotes = String.fromCharCode(96) + String.fromCharCode(96) + String.fromCharCode(96);
result = backQuotes + admonition + nl +
"title: " + title + nl + selection + nl + backQuotes;
return result;
‘‘‘
2. Capture 範例2
輸入關鍵字以插入動態圖片。
<%*
let keywords = await tp.system.prompt("隨機圖片:輸入關鍵字(以 , 分隔)");
keywords = keywords.replace(/ /g, "");
//console.log("keywords", keywords);
%>
<% tp.web.random_picture("1600x900", keywords) %>
3. Capture 範例3
將編碼後的網址轉換回正常網址。
<pre>
‘‘‘js quickadd
selObj = window.getSelection();
text = selObj.toString();
//await this.quickAddApi.utility.getClipboard();
text = await decodeURIComponent(text)
this.quickAddApi.utility.setClipboard(text);
//console.log("main " + text);
return text;
‘‘‘
</pre>
4. Template 範例
以每日筆記為範例(使用Templater、Tasks外掛),介紹如何輸出條件式內容。
- https://gist.github.com/emisjerry/95809a56c3d5517a38d887581a2214c9
5. 巨集
巨集操作由三個步驟組成:
- 撰寫腳本 js
- 巨集定義
- 巨集使用
5.1. 撰寫腳本 js
在檔案總管裡儲存庫任何資料夾新增腳本檔,如:my_script.js
async function notice1(params) {
//({ quickAddApi } = params);
//const quickAddApi = params.quickAddApi;
const text = await params.quickAddApi.inputPrompt("隨意輸入文字...");
new Notice(text, 5000);
return text;
}
async function notice2(params) {
//({ quickAddApi } = params);
//const quickAddApi = params.quickAddApi;
const text = await params.quickAddApi.inputPrompt("隨意輸入文字2...");
new Notice(text, 5000);
return text;
}
module.exports = { notice1,notice2 };
5.2. 巨集定義
- 【設定】→【外掛選項】→【QuickAdd】→【Manage Macros】
- 輸入巨集名稱(如「macro_notice」)後點擊〔Add macro〕
- 點擊新增巨集的【Configure】
- 在【User Scripts】選用要使用的腳本後按〔Add〕
- 要被執行的命令會添加在上方
5.3. 巨集使用
- 【設定】→【外掛選項】→【QuickAdd】
- 在QuicAdd Settings視窗裡輸入名稱(如 「Macro: notice」),選用【Macro】後按〔Add Choice〕
- 在新添加的巨集上點擊右側的【Configure】
- 選擇要使用的巨集(即 macro_notice)
6. Capture 使用巨集
在Capture format欄位輸入如下內容,會彈出視窗以選擇要用那個函數:
{{MACRO:macro_notice}}
直接使用指定的函數,此寫法似乎會影響Templater的動態命令:
{{MACRO:macro_notice::notice2}}
7. 範例檔連結
- 通用筆記樣板 template-quickadd.md
- 每日筆記樣板 (使用Tasks外掛) template-quickadd-daily.md
- Capture-format: Admonition
- QuickAdd inline JavaScript test
- QuickAdd Decode URL
- QuickAdd Get Random Picture
- 致謝:部份腳本係取材自對岸的BORDER網友的分享。❤️
8. 相關連結
9. 教學影片
##
您可能也會有興趣的類似文章
- [Obs#57] YAML區tags標籤自動補全的3種方法 (2則留言, 2021/10/23)
- [Obs#50] QuickAdd全攻略(一):改變工作流程的超強外掛 (0則留言, 2021/09/12)
- [Obs#56] 快速新增靈感/閃念筆記(Fleeting Note)的3種方法 (0則留言, 2021/10/10)
- [Obs#88] 綜合練習:快速設定的6種方法─使用8個Obsidian外掛 (0則留言, 2022/05/21)
- [Obs#58] 快速開啟常用筆記的方法 (0則留言, 2021/10/23)
- [Obs#68] 利用QuickAdd巨集由IMDB建立影片檔案,用Minimal主題顯示成卡片 (0則留言, 2022/02/06)
- Obs127|用Templater Hotkeys簡化Obsidian自動化腳本,詳解4個腳本範例 (0則留言, 2023/05/05)
- [Obs#71] 新手適用的多功能模板外掛:From Template (0則留言, 2022/02/19)
- [Obs#31] 美化提示方塊的外掛:Admonitions和方便選用的AutoHotkey腳本 (0則留言, 2021/04/05)
- Obs137|用Dataviewjs讀取CSV資料以繪製統計圖表 (0則留言, 2023/09/03)
- Obs153|快速開啟外掛設定的方法;使用Open Plugin Settings與Advanced URI,透過Templater Hotkeys綁定快捷鍵 (0則留言, 2024/02/28)
- [Obs#105] Obsidian外掛 Local REST API 提供外部整合服務 (0則留言, 2022/11/06)
- [Obs#53] Text Transporter 文字運輸車:透過書籤在不同筆記之間搬運文字 (0則留言, 2021/09/25)
- [Obs#55] 建立新筆記的模板設定-Calendar, Templater與QuickAdd (0則留言, 2021/10/09)
- Obs158|Copilot for Obsidian自訂提示詞與命令 (0則留言, 2024/03/24)
Sorry, 很久沒用Google sc…