我想在 Google 表格中创建一个“图像查看器”。
当用户运行侧边栏时,我希望它显示任何活动单元格中包含的图像链接。
我想构建更多逻辑(当特定列中的活动单元格发生变化时,可能会更改图片等),但现在我只是停留在显示图像上。
当我在代码中使用静态链接(第一个注释掉的行)时,我可以在侧边栏中完美地看到它。
但是,当我尝试从活动单元格检索图像链接时,侧边栏可以工作,但图像链接已损坏。
有什么想法吗?是不是我的图片链接设置有误?不知道从这里去哪里 - 尝试过编辑它但没有运气。
// @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
当我看到你的剧本时,
currentCell
的var image = HtmlService.createHtmlOutput("<p><img src="+currentCell+" /></p>");
是var 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);
}
侧边栏图像查看器
GS:
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
}
html:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<img src="https://drive.google.com/uc?id=<?=getLinkId()?>" />
</body>
</html>