2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
在客戶端代碼中,使用google.script.host.editor.focus()使編輯器上的選擇成為活動選擇。
function showSidebar(){
? var ui = DocumentApp.getUi();
? var html = '<div>Hello world!</div>'
? html += '<div><button onclick="google.script.host.editor.focus()">Click me!</button></div>';
? ui.showSidebar(HtmlService.createHtmlOutput(html));
}
在 Google Workspace 中移動瀏覽器焦點(diǎn)
要將用戶瀏覽器中的焦點(diǎn)從對話框或側(cè)邊欄切換回 Google 文檔、表格或表單編輯器,只需調(diào)用方法 google.script.host.editor.focus() 即可。此方法與文檔服務(wù)方法 Document.setCursor(position) 和 Document.setSelection(range) 結(jié)合使用特別有用。

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
解決方案
由于您的目標(biāo)是復(fù)制所選文本,我想提出一個(gè)替代解決方案:
現(xiàn)在,任務(wù)將直接包括復(fù)制功能,除了單擊按鈕之外,無需其他用戶輸入。它將這樣開發(fā):
文本選擇
通過單擊按鈕觸發(fā) Apps 腳本功能來獲取所選文本:
//... Your custom logic to get the text selection
var text-to-copy = doc.setSelection(x)
.getSelection()
.getRangeElements()
.map(re => re.getElement()
.asText()
.getText())
.join(" ");
return text-to-copy;
我們無法從 Apps 腳本訪問用戶剪貼板,但successHandler可以使用 a 將text-to-copy變量傳遞到客戶端界面。
處理服務(wù)器端返回值
通過以下方式,我們可以將文本傳遞回 HTML 側(cè)邊欄。
<!-- HTML Interface Index.html -->
<button onclick="google.script.run.withSuccessHandler(copyToClipboard).setSelection()">
Click Here
</button>
<script>
function copyToClipboard(text) {
const elem = document.createElement('textarea');
elem.value = text;
document.body.appendChild(elem);
elem.select();
document.execCommand('copy');
document.body.removeChild(elem);
}
</script>
現(xiàn)在,我們可以利用本機(jī)客戶端功能將該文本直接復(fù)制到用戶剪貼板,而無需在Ctrl+C腳本完成后讓她/他復(fù)制。
在這種情況下,一個(gè)好的做法是在復(fù)制過程完成后向用戶提供視覺反饋。
添加回答
舉報(bào)