html 如何在Google工作表侧边栏中显示基于活动单元格的图像

sgtfey8w  于 2022-12-21  发布在  Go
关注(0)|答案(2)|浏览(124)

我期待在谷歌表创建一个“图像查看器”。
当用户运行侧边栏时,我希望它显示包含在任何活动单元格中的图像链接。
我还想加入更多的逻辑(当特定列中的活动单元格发生变化时,可能会改变图片,等等),但现在我只是停留在显示图像上。
当我在代码中使用静态链接时(第一个注解掉的行),我可以在侧栏中完美地看到它。
但是,当我试图从活动单元格中检索图像链接时,侧栏可以工作,但带有一个损坏的图像链接。
有什么想法吗?我的图片链接可能设置错了吗?不知道从这里去哪里-已经尝试编辑它,但没有运气。

//@OnlyCurrentDoc


function onOpen() {
 SpreadsheetApp
   .getUi()
   .createMenu("Admin")
   .addItem("Admin page", "showAdminSidebar")
   .addToUi();
}

function showAdminSidebar() {

var ssThis = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ssThis.getActiveSheet();
var currentCell = activeSheet.getCurrentCell();

////THIS LINK WORKS

//  var image = HtmlService.createHtmlOutput("<p><img src='https://pbs.twimg.com/media/FT-abnEWUAINPuV?format=jpg&name=4096x4096' /></p>");

////USING LINK BASED ON CURRENT CELL: DOESNT SHOW IMAGE

  var image = HtmlService.createHtmlOutput("<p><img src="+currentCell+" /></p>");
 SpreadsheetApp.getUi().showSidebar(image);

 Logger.log(currentCell)
}

单元格a10和a11中包含图像链接的示例工作表:
https://docs.google.com/spreadsheets/d/1QBukh3yTgbAl1j7-2rgG4Dsxwv2KxkMcIMFl6FnZogU/edit?usp=sharing

1yjd4xko

1yjd4xko1#

我看到你的脚本,var image = HtmlService.createHtmlOutput("<p><img src="+currentCell+" /></p>");currentCellvar currentCell = activeSheet.getCurrentCell();,本例直接使用Class Range对象,如果要使用活动单元格的URL,请修改如下。

发件人:

var currentCell = activeSheet.getCurrentCell();

////THIS LINK WORKS

//  var image = HtmlService.createHtmlOutput("<p><img src='https://pbs.twimg.com/media/FT-abnEWUAINPuV?format=jpg&name=4096x4096' /></p>");

////USING LINK BASED ON CURRENT CELL: DOESNT SHOW IMAGE

var image = HtmlService.createHtmlOutput("<p><img src="+currentCell+" /></p>");

收件人:

var currentCell = activeSheet.getCurrentCell().getDisplayValue();
if (!currentCell || !(/^https?:\/\/.*$/.test(currentCell))) return;  
var image = HtmlService.createHtmlOutput("<p><img src='" + currentCell + "' /></p>");

参考:

  • 获取当前单元格()

添加:

当我提出的修改反映在您的脚本中时,showAdminSidebar()被修改为如下所示。因此,请替换您当前的showAdminSidebar(),并再次测试。

function showAdminSidebar() {
  var ssThis = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ssThis.getActiveSheet();
  var currentCell = activeSheet.getCurrentCell().getDisplayValue();
  if (!currentCell || !(/^https?:\/\/.*$/.test(currentCell))) return;
  var image = HtmlService.createHtmlOutput("<p><img src='" + currentCell + "' /></p>");
  SpreadsheetApp.getUi().showSidebar(image);
}
cgfeq70w

cgfeq70w2#

边栏图像查看器
一般事务:

function myfunk() {
  let html = HtmlService.createTemplateFromFile("ah2").evaluate().setTitle("Image Viewer");
  SpreadsheetApp.getUi().showSidebar(html);
    }

function getLinkId() {
  return "image file id";//file id of image you shared to public
}

网页:

<!DOCTYPE html>
<html>
<head>
    <base target="_top">
</head>
<body>
  <img src="https://drive.google.com/uc?id=<?=getLinkId()?>" />
 </body>
</html>

相关问题