Отображение нескольких гиперссылок в msgbx/toast?

Итак, в основном у меня есть список ссылок, которые я хочу, чтобы пользователь видел через какое-то всплывающее окно. Я нашел аналогичный вопрос здесь решение состояло в том, чтобы сделать панель пользовательского интерфейса для этого. Но это было только по одной ссылке. Мне нужно разместить несколько ссылок в одной и той же области одну за другой. Когда я пробовал это для нескольких ссылок, отображалась ошибка, в которой говорилось, что разрешен только один ребенок для каждого родителя или что-то в этом роде.

Я надеюсь, что кто-то может подтолкнуть меня в правильном направлении. И действительно ли невозможно вставить гиперссылку в окно сообщения или тост?

Заранее спасибо.


person PhysLabTsar    schedule 09.07.2013    source источник
comment
С правильным типом панели вы можете добавить несколько ссылок. Можете ли вы опубликовать свой код здесь. Также попробуйте использовать другую панель, возможно, VerticalPanel.   -  person Srik    schedule 09.07.2013
comment
Я бы опубликовал только небольшую вариацию кода из ссылки, которую я разместил выше. Но вы с Сережей ответили на мой вопрос. Спасибо!   -  person PhysLabTsar    schedule 10.07.2013


Ответы (1)


Как прокомментировал Срик, используйте, например, другую панель:

function test(){
showURL('Google','http://www.google.com','Stackoverflow','http://stackoverflow.com/questions/tagged/google-apps-script')
}

function showURL(name1,href1,name2,href2){ // for ease of use I give the urls as parameters but you could define these urls in the function as well
  var app = UiApp.createApplication().setHeight(60).setWidth(200);
  app.setTitle("Show URLs");
  var link1 = app.createAnchor(name1, href1);
  var link2 = app.createAnchor(name2, href2);

  app.add(app.createVerticalPanel().add(link1).add(link2));  // add others as needed
  var doc = SpreadsheetApp.getActive();
  doc.show(app);
  }

введите здесь описание изображения


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

function test(){
showURL(['Google','http://www.google.com','Stackoverflow','http://stackoverflow.com/questions/tagged/google-apps-script','Google','http://www.google.com','Stackoverflow','http://stackoverflow.com/questions/tagged/google-apps-script'])
}

function showURL(data){ // for ease of use I give the urls as parameters but you could define these urls in the function as well
  var app = UiApp.createApplication().setHeight(40+8*data.length).setWidth(200);
  app.setTitle("Show URLs");
  var panel = app.createVerticalPanel();
  app.add(panel);
  for(var d=0 ; d<data.length;d=d+2){
  var link = app.createAnchor(data[d], data[(d+1)]);
  panel.add(link);
  }
  var doc = SpreadsheetApp.getActive();
  doc.show(app);
  }
person Serge insas    schedule 09.07.2013
comment
Спасибо Серж! Это подтолкнуло меня в правильном направлении. У меня есть динамический список ссылок, но с помощью приведенного выше кода его совсем не сложно реализовать. Мне просто нужно было что-то подобное для запуска. Большое спасибо! - person PhysLabTsar; 09.07.2013
comment
Я начал настраивать ваш исходный код для работы с динамическим списком. Но ваш новый код намного эффективнее моего. Спасибо! :) - person PhysLabTsar; 10.07.2013
comment
С удовольствием :-), есть много способов заставить это работать... использование массивов, вероятно, является одним из самых простых. Объекты тоже были бы хороши... - person Serge insas; 10.07.2013