如何将 google 电子表格中的单元格超链接到 google 驱动器上文件夹中的图像?
How to hyperlink a cell in google spreadsheets to an image in a folder on google drive?
我有一个 google 电子表格,其中有一列名为 photo。该列中的图像名称(例如:“123”)与单独的 google 驱动器文件夹(例如:"IMG_123.jpg")中的图像相匹配。目前,为了查看图像,我必须打开 google 驱动器文件夹并手动搜索图像。
如果 A1 是内容为“123”的单元格,我想做这样的事情:
"=HYPERLINK('https://drive.google.com/drive/foldername/IMG_"&A1&".jpg',"&A1&");"
如果这甚至可能,url 应该是什么来引用特定图像?
更新
现在我已经创建了一个可用的 google 脚本函数!但它似乎只适用于范围内的第一个活动单元格:
function getImageLinks() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveRange();
var folder = DriveApp.getFolderById("my_folder_id_here");
var contents = folder.getFiles();
var numRows = range.getNumRows();
var numCols = range.getNumColumns();
for (var i = 1; i <= numRows; i++) {
for (var j = 1; j <= numCols; j++) {
var imgName = range.getCell(i,j).getValue();
while (contents.hasNext()) {
var file = contents.next();
var fileName = file.getName();
if(fileName.search(imgName) >= 0){
range.getCell(i,j).setFormula("=HYPERLINK(\""+file.getUrl()+"\",\""+imgName+"\")");
break;
}
}
}
}
}
谁能指出我做错了什么?
我不认为那样会很有效。如果您转到那个特定文件夹,您会注意到 URL 没有引用文件夹名称。它引用特定的 ID 字符串。文件也是如此。
有ways to do that with Google Script个。
function getImageLinks() {
var sheet = SpreadsheetApp.getActiveSheet();
var folder = DriveApp.getFolderById("YOUR_FOLDERID");
var contents = folder.getFiles();
var numRows = sheet.getLastRow();
Logger.log('number of rows = ' + numRows);
for (var i = 1; i <= numRows; i++) {
var imgName = sheet.getRange(i, 1).getValue(); //adjust number to reflect column of value
while (contents.hasNext()) {
var file = contents.next();
var fileName = file.getName();
if(fileName.search(imgName) >= 0){
sheet.getRange(i,1).setFormula("=HYPERLINK(\""+file.getUrl()+"\",\""+imgName+"\")"); //adjust number for getRange to reflect column
break;
}
}
}
}
我有一个 google 电子表格,其中有一列名为 photo。该列中的图像名称(例如:“123”)与单独的 google 驱动器文件夹(例如:"IMG_123.jpg")中的图像相匹配。目前,为了查看图像,我必须打开 google 驱动器文件夹并手动搜索图像。
如果 A1 是内容为“123”的单元格,我想做这样的事情:
"=HYPERLINK('https://drive.google.com/drive/foldername/IMG_"&A1&".jpg',"&A1&");"
如果这甚至可能,url 应该是什么来引用特定图像?
更新
现在我已经创建了一个可用的 google 脚本函数!但它似乎只适用于范围内的第一个活动单元格:
function getImageLinks() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveRange();
var folder = DriveApp.getFolderById("my_folder_id_here");
var contents = folder.getFiles();
var numRows = range.getNumRows();
var numCols = range.getNumColumns();
for (var i = 1; i <= numRows; i++) {
for (var j = 1; j <= numCols; j++) {
var imgName = range.getCell(i,j).getValue();
while (contents.hasNext()) {
var file = contents.next();
var fileName = file.getName();
if(fileName.search(imgName) >= 0){
range.getCell(i,j).setFormula("=HYPERLINK(\""+file.getUrl()+"\",\""+imgName+"\")");
break;
}
}
}
}
}
谁能指出我做错了什么?
我不认为那样会很有效。如果您转到那个特定文件夹,您会注意到 URL 没有引用文件夹名称。它引用特定的 ID 字符串。文件也是如此。
有ways to do that with Google Script个。
function getImageLinks() {
var sheet = SpreadsheetApp.getActiveSheet();
var folder = DriveApp.getFolderById("YOUR_FOLDERID");
var contents = folder.getFiles();
var numRows = sheet.getLastRow();
Logger.log('number of rows = ' + numRows);
for (var i = 1; i <= numRows; i++) {
var imgName = sheet.getRange(i, 1).getValue(); //adjust number to reflect column of value
while (contents.hasNext()) {
var file = contents.next();
var fileName = file.getName();
if(fileName.search(imgName) >= 0){
sheet.getRange(i,1).setFormula("=HYPERLINK(\""+file.getUrl()+"\",\""+imgName+"\")"); //adjust number for getRange to reflect column
break;
}
}
}
}