使用google-apps-script创建带超链接的图像

时间:2012-05-29 06:07:55

标签: image hyperlink google-apps-script

我一直试图将带有超链接的图片放到谷歌应用程序脚本ui中。我首先想到使用createAnchor(),但这只允许使用文本。然后我考虑使用一个按钮,但据我所知,你无法打开一个新的选项卡/窗口并重新定向回调函数。

我也尝试过createHTML(),但该元素尚未被它处理。

我看到人们在图片上叠加透明按钮,但在回调中仍有相同的问题。

我的研究还没有找到答案。有没有人有任何解决方案/例子?

由于

7 个答案:

答案 0 :(得分:1)

这适用于Chrome20和IE9

      // Container for box and results
      var imageContainer = app.createFlexTable();


      // Setup the button
      var button = app.createButton("ImageButton");
      button.setStyleAttribute("background", "url(dontshowimagehere.JPG) no-repeat");
      button.setStyleAttribute("position", "absolute");
      button.setStyleAttribute("color", "transparent");
      button.setStyleAttribute('zIndex','1');
      button.setStyleAttribute("border", "0px solid black");



      imageContainer.setWidget(0, 0, button);

      // image to click
      var image = app.createImage("image.jpg").setId(imageId);

      imageContainer.setWidget(1,0, image);                    

图像有轻微(3px)的偏移。如果重要的话,这样可以修复它http://www.w3schools.com/css/css_positioning.asp(对于图像和按钮,使用flex表和top等的相对值)

答案 1 :(得分:1)

您是否尝试过覆盖图像的透明锚点?

function doGet() {
var app = UiApp.createApplication().setTitle("Image Anchor");
var panel = app.createAbsolutePanel().setWidth('50%').setHeight('50%');
var image = app.createImage().setUrl("https://lh6.googleusercontent.com/-v0Q3gPQz03Q/T_y5gcVw7LI/AAAAAAAAAF8/ol9uup7Xm2g/s512/GooglePlus-512-Red.png").setStyleAttribute("width", "28px").setStyleAttribute("height", "28px");
var anchor = app.createAnchor("?", "https://plus.google.com/u/1/116085534841818923812/posts").setHeight("28px").setWidth("28px").setStyleAttribute("opacity", "0.1").setTarget("blank");
panel.add(image,100,50);
panel.add(anchor,100,50);
app.add(panel);  
return app.close();
}

答案 2 :(得分:1)

  

app.createAbsolutePanel()   。新增(app.createImage(' https://www.google.com/images/logos/google_logo_41.png'))   。新增(app.createAnchor('',' https://www.google.co.uk/intl/en/about/')   .setStyleAttributes({位置:'绝对',顶端:' 0像素',左:' 0像素',宽度:' 201px',高度: ' 47px',不透明度:' 0'}))

这是经过测试的。它工作正常。 它不适用于定位图像(绝对'绝对')。 它不适用于.setHorizo​​ntalAlignment(UiApp.Horizo​​ntalAlignment.CENTER)

答案 3 :(得分:0)

我不相信这可用于小部件。我建议改变你的UI设计,改为使用Anchor小部件。

答案 4 :(得分:0)

如果您直接在自己的网页上进行编码,请使用HTML Box。点击“修改”编辑您的页面,然后转到菜单中的“插入> HTML Box”。它也会接受javascript!有几点需要注意 - 当使用javascript时,HTML Box不会接受链接......太糟糕了,但是有太多的漏洞。

如果您使用应用程序脚本进行编码,则可以尝试将图像放在面板上并使用绝对面板并将链接放在图像上。另一种方法可以是使用.setStyleAttribute进行CSS样式,并利用zIndex参数将面板放在图像顶部....就像这样:

var panel = app.createSimplePanel();
// add your image to the simple panel or whatever panel you wish to choose in your GUI

var popPanel = app.createSimplePanel()
  .setStyleAttribute('top','Y')
  .setStyleAttribute('left','X')
  .setStyleAttribute('zIndex','1')
  .setStyleAttribute('position','fixed');
// add your anchor to the popPanel

app.add(panel).add(popPanel);

不是100%确定你是否可以使这个面板透明,但你可以尝试这样的事情:     .setStyleAttribute( '背景',透明') 或通过以下方式更改不透明度:     .setStyleAttribute( '不透明度', '5')

希望这会给你一些想法!

答案 5 :(得分:0)

我设法用一个Anchor对象并使用CSS3。 它适用于Chrome,我没有在其他浏览器中测试它。

gui.createAnchor("", false, "$DESTINATION_URL$")
   .setStyleAttributes({ "display":"block",
                         "width":"$IMAGE_WIDTH_IN_PIXEL$",
                         "height":"$IMAGE_HEIGHT_IN_PIXEL$",
                         "background":"url($URL_OF_THE_IMAGE$)",
                         "background-size":"100% 100%",
                         "background-repeat":"no-repeat" })

当然你必须用你的数据替换$ ...... $。

亨利

答案 6 :(得分:-1)

如果您首先在字符串中创建所有HTML,则可以使用您想要的HTML替换页面内容:

var myString = 'the html you want to add, for example you image link and button';
var page = SitesApp.getSite('example.com', 'mysite').getChildByName('targetpage');
var upage = page.setHtmlContent('<div>' + myString + '</div>');