我尝试使用以下脚本将存储在Google Drive中的jpg图像插入电子表格中。我使用该getUrl()
方法获得的网址不起作用。但是,如果我使用此网址在Chrome中打开图片,然后右键单击图片并选择“获取图片网址”,则会得到一个有效的网址。有没有可以让我获得正确网址的脚本方法?还是有另一种方法可以达到相同的结果?
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?
将先进的驱动服务能够使用谷歌从Apps脚本的谷歌驱动的Web API的。按照这些说明启用该服务后,其方法和属性将显示在GAS编辑器的“自动完成”功能中,使您可以轻松地探索可用功能。
例如,ADS File对象具有此处记录的属性的集合。您感兴趣的是.webContentLink
。我们可以轻松地将ADS与取代了不推荐使用的DocsList的DriveApp方法结合使用,例如,通过检索您感兴趣的图像的fileId并将其与ADSget()
函数一起使用。
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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句