Таблицы Google, скрипт для установки нескольких гиперссылок в одной ячейке - PullRequest
0 голосов
/ 29 мая 2020

Моя цель - создать ячейку электронной таблицы с несколькими гиперссылками из скрипта Google.

Я могу создать ячейку с несколькими ссылками, выбрав часть текста ячейки, а затем используя Ctrl + K или меню insert link. В моей ячейке в качестве примера было google and yahoo с двумя гиперссылками, по одной на каждую поисковую систему.

Я могу прочитать гиперссылки в этой ячейке двумя разными способами:

 var range = SpreadsheetApp.getActiveSheet().getRange('A1');
 var richText = range.getRichTextValue();
 var allRuns = richText.getRuns();
 var firstLink = allRuns[0].getLinkUrl();
 var secondLink = allRuns[2].getLinkUrl();
 var gLink = richText.getLinkUrl(0, 5);
 var aLink = richText.getLinkUrl(11, 15);

Но там setLinkUrl метод недоступен. Я тоже ничего не смог найти в API листов Google .

Я скопировал эту ячейку и использовал xclip в Linux, команду

xclip -selection clipboard -o  -t text/html

Результат is

<meta http-equiv="content-type" content="text/html; charset=utf-8">                                                                                                                                                                                                  
<style type="text/css">                                                                                                                                                                                                                                              
<!--                                                                                                                                                                                                                                                                 
td {                                                                                                                                                                                                                                                                 
    border: 1px solid #ccc;                                                                                                                                                                                                                                          
}                                                                                                                                                                                                                                                                    

br {                                                                                                                                                                                                                                                                 
    mso-data-placement: same-cell;                                                                                                                                                                                                                                   
}                                                                                                                                                                                                                                                                    
-->                                                                                                                                                                                                                                                                  
</style>                                                                                                                                                                                                                                                             
<span style="font-size: 10pt; font-family: Arial; font-style: normal;"                                                                                                                                                                                               
    data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;google and yahoo&quot;}"                                                                                                                                                                                 
    data-sheets-userformat="{&quot;2&quot;:1049089,&quot;3&quot;:{&quot;1&quot;:0},&quot;12&quot;:0,&quot;23&quot;:1}"                                                                                                                                               
    data-sheets-textstyleruns="{&quot;1&quot;:0,&quot;2&quot;:{&quot;2&quot;:{&quot;1&quot;:2,&quot;2&quot;:1136076},&quot;9&quot;:1}}{&quot;1&quot;:6}{&quot;1&quot;:11,&quot;2&quot;:{&quot;2&quot;:{&quot;1&quot;:2,&quot;2&quot;:1136076},&quot;9&quot;:1}}"   
    data-sheets-hyperlinkruns="{&quot;1&quot;:0,&quot;2&quot;:&quot;https://www.google.com/&quot;}{&quot;1&quot;:6}{&quot;1&quot;:11,&quot;2&quot;:&quot;https://www.yahoo.com/&quot;}{&quot;1&quot;:16}"><span                                                   
    style="font-size: 10pt; font-family: Arial; font-style: normal; text-decoration: underline; -webkit-text-decoration-skip: none; text-decoration-skip-ink: none; color: #1155cc;"><a                                                                              
        class="in-cell-link" target="_blank" href="https://www.google.com/">google</a></span><span                                                                                                                                                                   
    style="font-size: 10pt; font-family: Arial; font-style: normal;">                                                                                                                                                                                                
        and </span><span                                                                                                                                                                                                                                             
    style="font-size: 10pt; font-family: Arial; font-style: normal; text-decoration: underline; -webkit-text-decoration-skip: none; text-decoration-skip-ink: none; color: #1155cc;"><a                                                                              
        class="in-cell-link" target="_blank" href="https://www.yahoo.com/">yahoo</a></span></span>                                                                                                                                                                   

Я не уверен, означает ли это, что гиперссылки имеют свои собственные прогоны, запускается независимый стиль текста формы? Приветствуются любые указатели.

1 Ответ

3 голосов
/ 29 мая 2020
function addMultipleUrlsToCell() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet2');
  sh.getRange('A1').setValue('');
  var RichTextValue=SpreadsheetApp.newRichTextValue()
  .setText("Google,GASReference,SO")
  .setLinkUrl(0,6,"https://google.com/")
  .setLinkUrl(7,19,"https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app/")
  .setLinkUrl(20,22,"https://stackoverflow.com")
  .build();
  sh.getRange("A1").setRichTextValue(RichTextValue);
}

function retrieveMultipleUrls() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Sheet2');
  const rg=sh.getRange(1,1);
  var rtv=rg.getRichTextValue().getRuns();
  var res=rtv.reduce(function(ar,e){
    var url=e.getLinkUrl();
    if(url)ar.push(url);
    return ar;
  },[]);
  console.log(res);
}

Ссылка

...