簡體   English   中英

如何根據活動單元格在 Google 表格側邊欄中顯示圖像

[英]How to show image in Google Sheets Sidebar based on active cell

我想在 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 of 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM