我尝试使用下面的脚本将存储在Google云端硬盘文件夹中的jpg图像插入电子表格中。我使用getUrl()
方法获取的网址不起作用。但是,如果我使用此网址在Chrome中打开图片并右键点击该图片,然后选择“获取图片网址”,'我得到了一个可行的网址。是否有一个脚本方法可以获得正确的Url?或者是否有其他方法可以实现相同的结果?
function testInsertImage() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var folder = DocsList.getFolder('DataBasePicts');
var files = folder.getFiles();
var img = files[0].getUrl();
sheet.insertImage(img, 2, 2); // In Class Sheet method 'insertImage(url, column, row)'
}
// Url obtained by the .getUrl() above which does not work
// "https://docs.google.com/open?id=1fxx_KYV46swKQk5vh9h1ideOhW76ZhJVYIPUjopbXm4"
// Url obtained by right clicking the image when opened in Chrome using above Url which does work
// "https://lh6.googleusercontent.com/eWA2oIabdGeXLnIRkTkdXuZFlvt6L_pJbgKBLoTFVDEWVESPxpvziHJnFpeXocMmnwUEvYWIab4=w1318-h612"
//.insertImage gives this error message:
// Error retrieving image from URL or bad URL: https://docs.google.com/open?
答案 0 :(得分:0)
使用File的getWebContentLink()方法。
File file = serive.files().get(fileId).execute();
file.getWebContentLink()
答案 1 :(得分:0)
Advanced Drive Service可以使用Google Apps脚本中的Google Drive Web API。按照these instructions启用该服务后,其方法和属性将显示在GAS编辑器的自动填充功能中,便于浏览可用功能。
例如,ADS File对象具有一组属性documented here。您感兴趣的是.webContentLink
。我们可以轻松地将ADS与替换已弃用的DocsList的DriveApp方法相结合,例如通过检索您感兴趣的图像的fileId并将其与ADS get()
函数一起使用。
function testInsertImage() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var folders = DriveApp.getFoldersByName('DataBasePicts');
if (folders.hasNext()) {
// Assume folder name is unique, so use first match
var folder = folders.next();
var files = folder.getFiles();
if (files.hasNext()) {
// For this test, use first found file
var file = files.next();
var img = Drive.Files.get(file.getId()).webContentLink;
sheet.insertImage(img, 2, 2); // In Class Sheet method 'insertImage(url, column, row)'
}
// else error: no file found
}
// else error: no folder found
}