【发布时间】:2018-03-22 17:16:19
【问题描述】:
在下面的代码中,我在我的云端硬盘中获取文件的 URL,并在公式 =IMAGE() 中使用它。但是,图像未显示在单元格中。我将正在检索的 URL 复制并粘贴到我的浏览器中,它会提取图像文件。我还尝试输入不同的 URL(来自 Google 图片搜索),它在单元格中显示了图片。这是我的代码的 sn-p 不起作用:
//Function to populate Packing Instructions sheet
function createPackingInstructions() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var entryFormSheet = ss.getSheetByName('Entry Form');
var packingInstructionsSheet = ss.getSheetByName('Packing Instructions');
var poNumber = entryFormSheet.getRange(2, 2).getValue();
var drive = DriveApp;
var proofHorizontal = drive.getFilesByName('PO ' + poNumber + ' Proof Horizontal.png');
var proofRange = packingInstructionsSheet.getRange(1, 7);
Logger.log(poNumber);
//Starts by clearing the Instructions sheet
packingInstructionsSheet.getRange(11, 1, 30, 11).clear();
proofRange.clearContent();
Logger.log(proofHorizontal.hasNext());
//Gets image file URL
while (proofHorizontal.hasNext()) {
var file = proofHorizontal.next();
var proofName = file.getName();
var proofUrl = file.getUrl();
Logger.log(proofName);
Logger.log(proofUrl);
proofRange.setFormula('IMAGE("' + proofUrl + '", 1)');
}
}
我根据here 中的建议调整了代码以使用 URL 的永久链接版本,但它具有相同的行为;它正确输入了公式,并且 URL 在输入我的浏览器时有效,但图像不会显示在单元格中。这是更新的代码:
//Function to populate Packing Instructions sheet
function createPackingInstructions() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var entryFormSheet = ss.getSheetByName('Entry Form');
var packingInstructionsSheet = ss.getSheetByName('Packing Instructions');
var poNumber = entryFormSheet.getRange(2, 2).getValue();
var drive = DriveApp;
var proofHorizontal = drive.getFilesByName('PO ' + poNumber + ' Proof Horizontal.png');
var proofRange = packingInstructionsSheet.getRange(1, 7);
var baseUrl = "http://drive.google.com/uc?export=view&id=";
Logger.log(poNumber);
//Starts by clearing the Instructions sheet
packingInstructionsSheet.getRange(11, 1, 30, 11).clear();
proofRange.clearContent();
Logger.log(proofHorizontal.hasNext());
//Gets image file URL
while (proofHorizontal.hasNext()) {
var file = proofHorizontal.next();
//file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
var proofId = file.getId();
var proofUrl = baseUrl+proofId;
Logger.log(proofUrl);
proofRange.setFormula('IMAGE("' + proofUrl + '", 1)');
}
}
【问题讨论】:
-
setFormula 方法自动添加“=”。为了确定,我尝试了两种方式;行为是相同的。
-
当你手动输入函数时,它对你的文件链接有效吗?编辑电子表格上脚本结果的屏幕截图/链接
-
似乎这不可能直接:webapps.stackexchange.com/questions/86081/… 您必须实施一种解决方法才能获得可托管的链接。
标签: google-apps-script google-sheets google-drive-api