亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過側邊欄按鈕設置文本的 setSelection() - 如何使其成為活動選擇?

通過側邊欄按鈕設置文本的 setSelection() - 如何使其成為活動選擇?

aluckdog 2023-07-20 10:53:33
背景:我正在谷歌市場插件中使用該setSelection()方法來獲取谷歌文檔。單擊附加組件側邊欄上的相關按鈕時,會按預期選擇文本。但是,此選擇未激活 - 即所選文本以淺灰色而不是淺藍色突出顯示(請參見下面的示例)。現在:?我需要的:?這是因為瀏覽器選項卡的最后一個活動部分是側邊欄(單擊按鈕后),而不是實際文檔。問題:有沒有辦法讓按鈕單擊選擇文本并使文檔保持活動部分?目標:Ctrl + C此選擇的全部目的是通過鍵盤復制所選文本,當選擇未激活時這是不可能的?,F在用戶需要使用鼠標右鍵單擊并Copy從菜單中選擇...
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

在客戶端代碼中,使用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 中移動瀏覽器焦點

要將用戶瀏覽器中的焦點從對話框或側邊欄切換回 Google 文檔、表格或表單編輯器,只需調用方法 google.script.host.editor.focus() 即可。此方法與文檔服務方法 Document.setCursor(position) 和 Document.setSelection(range) 結合使用特別有用。


查看完整回答
反對 回復 2023-07-20
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

解決方案

由于您的目標是復制所選文本,我想提出一個替代解決方案:


現在,任務將直接包括復制功能,除了單擊按鈕之外,無需其他用戶輸入。它將這樣開發:


文本選擇

通過單擊按鈕觸發 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變量傳遞到客戶端界面。


處理服務器端返回值

通過以下方式,我們可以將文本傳遞回 HTML 側邊欄。


<!-- 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>

現在,我們可以利用本機客戶端功能將該文本直接復制到用戶剪貼板,而無需在Ctrl+C腳本完成后讓她/他復制。


在這種情況下,一個好的做法是在復制過程完成后向用戶提供視覺反饋。


查看完整回答
反對 回復 2023-07-20
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號