2017-01-02 64 views
1

所以我想写一个谷歌脚本,将创建一个图像文件从谷歌驱动器上的3个不同的图像文件。我决定使用的方法是在Drive中创建一个模板或基本gDraw文件,然后修改该文件并将其导出为jpeg。到目前为止,我已经能够使用此文章的代码1)Is there a Google Appscript command that can convert a .gDraw to a .jpg? 2)Can a trigger be set to perform this conversion on .gdraw file edit?将我的gDraw文件导出为图像。谷歌脚本替换gDraw文件中的图像

function gDrawTO_jpeg(){ 
    var gDrawFile = Drive.Files.get('1P2qYTyeI9RovsI_qwiMEtlBeTJw-exjckQeYLL_NA7w'); 
    var url = gDrawFile.exportLinks['image/jpeg']; 
    var token = ScriptApp.getOAuthToken(); 
    var response = UrlFetchApp.fetch(url, { 
     headers: { 
       'Authorization': 'Bearer ' + token 
       } 
    }); 
    var jpeg = response.getBlob(); 
    // save drawing as jpeg file to Drive, or do whatever you need to with the blob 
    DriveApp.createFile(jpeg); 
} 

我一直在试图弄清楚如何替换gDraw文件中的图像。

在此先感谢您的帮助!

回答

0

我从来没有遇到Google Draw的API,这意味着脚本无法联系编辑。然而,就在一个月前,Google推出了可以远程添加图片的Slide API。不知道这是否有帮助,幻灯片可以嵌入。

0

感谢您的指导。这是我通过调整我找到的一些不同的代码而得到的。我目前有一张幻灯片,其中一张图像永远不会更改,另外两张图片可以表示其他两张图像的位置。我建立了幻灯片的新副本,然后在此帖子How to download Google Slides as images?中调用downloadPresentation(id)将新幻灯片导出为PNG!

function slides_template() { 


    var IMG_FILE = 'IMG_4096.JPG'  
    var TMPLFILE = 'Grid Template' 
    var SZIMG_FILE = 'onesize.jpeg' 


    SLIDES.setTokenService(function(){returnScriptApp.getOAuthToken()}); 


    Logger.log('** Copying template **'); 
    var DECK_ID = DriveApp.getFilesByName(TMPLFILE).next().makeCopy().getId(); 


    Logger.log('** Searching for files'); 
    var rsp = DriveApp.getFilesByName(IMG_FILE).next(); 
    var szrsp = DriveApp.getFilesByName(SZIMG_FILE).next(); 

    Logger.log(Utilities.formatString(' - Found image %s', rsp.getId())); 

    var img_url = rsp.getDownloadUrl()+"&access_token="+ScriptApp.getOAuthToken(); 
    var szimg_url = szrsp.getDownloadUrl()+"&access_token="+ScriptApp.getOAuthToken(); 


    Logger.log('Inserting Images'); 
var reqs = [  

    {"replaceAllShapesWithImage": { 

    "imageUrl": img_url, 
    "replaceMethod": "CENTER_CROP", 
    "containsText": { 
      "text": "Main_Image", 
      "matchCase": "True", 
       } 
    },}, 

    {"replaceAllShapesWithImage": { 

    "imageUrl": szimg_url, 
    "replaceMethod": "CENTER_CROP", 
    "containsText": { 
      "text": "Size_Image", 
      "matchCase": "True", 
       } 
    },}, 

    ]; 


    SLIDES.presentationsBatchUpdate(DECK_ID, {'requests': reqs}); 

    downloadPresentation(DECK_ID) 

    Logger.log('DONE'); 
}