2017-03-27 140 views
0

我試圖使用jSignature將簽名板添加到Google表單。我添加了記錄這樣的簽名的對話框:使用Google腳本將圖像保存到電子表格

//Code.gs 
function showDialog() { 
    var html = HtmlService.createHtmlOutputFromFile('Page') 
    .setWidth(400) 
    .setHeight(300); 
DocumentApp.getUi() 
    .showModalDialog(html, 'Your Signature is Required'); 
} 

//Page.html 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script src="https://cdn.rawgit.com/willowsystems/jSignature/master/libs/jSignature.min.js"></script> 

Please draw your signature on the signature pad below: 

<div id="signature"></div> 

<img id="rendered" src=""> 

<script> 
    $("#signature").jSignature({ 
    'background-color': 'transparent', 
    'decor-color': 'transparent' 
    }); 

    function renderSignature(){ 
    $("img#rendered").attr("src",$('#signature').jSignature('getData','default')); 
    } 
</script> 

<input type="button" value="Render" onclick="renderSignature();"/> 
<input type="button" value="Add to Sheet" onclick="//What to do"/> 
<input type="button" value="Close" onclick="google.script.host.close()" /> 

的唯一的事情是我無法弄清楚如何獲取圖像到細胞中。複製/粘貼將不起作用,只要我能說明就需要插入。我在想也許我寫了一個函數將它保存到Google Drive,然後使用URL插入它,但我仍然無法弄清楚如何抓取實際圖像以便用它做任何事情。任何洞察力的讚賞,我是新來的GS。

+1

您是否在文檔的工作表頁上嘗試了[insertImage](https://developers.google.com/apps-script/reference/spreadsheet/sheet)? – Cooper

+0

還沒有到那麼遠,我無法弄清楚如何從對話框中獲取渲染圖像。 :\ – Lauren

+0

[This](http://stackoverflow.com/questions/10673122/how-to-save-canvas-as-an-image-with-canvas-todataurl)可能會有所幫助。 – Cooper

回答

1

要保存圖像到你的硬盤,你可以做這樣的事情

您的HTML代碼:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script src="https://cdn.rawgit.com/willowsystems/jSignature/master/libs/jSignature.min.js"></script> 

Please draw your signature on the signature pad below: 

<div id="signature"></div> 

<img id="rendered" src=""> 

<script> 
    $("#signature").jSignature({ 
    'background-color': 'transparent', 
    'decor-color': 'transparent' 
    }); 

    function renderSignature(){ 
    $("img#rendered").attr("src",$('#signature').jSignature('getData','default')); 
    } 

    function saveImage(){ //This sends the image src to saveImages function 
    var bytes = document.getElementById('rendered').src 
    console.log(bytes) 
    google.script.run.saveImage(bytes) 
    } 
</script> 

<input type="button" value="Render" onclick="renderSignature();"/> 
<input type="button" value="Add to Sheet" onclick="saveImage()"/> 
<input type="button" value="Close" onclick="google.script.host.close()" /> 

服務器端代碼:

function showDialog() { 
    var html = HtmlService.createHtmlOutputFromFile('Sign') 
    .setWidth(400) 
    .setHeight(300); 
SpreadsheetApp.getUi() 
    .showModalDialog(html, 'Your Signature is Required'); 
} 

function saveImage(bytes){ 
    var bytes = bytes.split(",") 
    var blob = Utilities.newBlob(Utilities.base64Decode(bytes[1]), 'image/png'); 
    blob.setName("Sign Pic") 
    DriveApp.getFolderById("Folder ID to save SignPic").createFile(blob) 
} 

你將不得不跟蹤圖像文件名稱並相應地將圖片插入到電子表格中。

+0

哦,我的天啊,它的工作!我發誓我早些時候使用了DriveApp,並且不斷收到「DriveApp」未定義的錯誤。有什麼不對嗎!我可以使用相同的文檔上傳插入圖像到電子表格嗎? – Lauren

+0

謝謝,你在這裏的幫助,我得到它的工作! – Lauren

+0

可能是一個錯字,使用Driveapp或DriveApp?無論哪種方式,很高興它的工作 –

相關問題