将HTML画布放入Google电子表格
我正在尝试将HTML画布放入Google电子表格。我发现了一个简单的涂鸦板,它只使用html、css和javascript。我创建了一个自定义对话框,并将Scrible Pad合并到其中。那很好用。现在我想发送到Google电子表格。到目前为止,我所拥有的是:
在我的HTML中:
<canvas id="drawing-board"></canvas>
在我的<script>
中:
const canvas = document.getElementById('drawing-board');
var url = canvas.toDataURL("image/jpeg", 1.0);
google.script.run.receiveDataURL(url);
在Code.gs中:
function receiveDataURL(url) {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Sheet2");
var blob = Utilities.newBlob(Utilities.base64Decode(url), 'image/jpg', 'MyImageName');
sh.insertImage(blob,1,1);
}
catch(err) {
console.log(err);
}
}
如果我只插入图像(url,‘image/jpg’),我会得到一个黑盒。它应该是白色的,上面有一些涂鸦。
有什么想法吗?
解决方案
作为另一个答案,";insert";方法可以直接使用data URL。因此可以按如下方式修改您的脚本。
修改后的脚本:
function receiveDataURL(url) {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Sheet2");
sh.insertImage(url,1,1);
}
catch(err) {
console.log(err);
}
}
作为示例HTML&;Javascript,您可以使用以下Javascript对其进行测试。
<canvas id="drawing-board"></canvas> <script> const canvas = document.getElementById('drawing-board'); canvas.width = 100; canvas.height = 50; // Sample rectangle image is put. const context = canvas.getContext("2d"); context.beginPath(); context.rect(0, 0, 100, 50); context.fillStyle = "#FF0000"; context.fill(); // Retrieve the data URL. var url = canvas.toDataURL("image/jpeg", 1.0); google.script.run.receiveDataURL(url); </script>
- 运行此脚本时,会将一个红色矩形放到";Sheet2";中。
引用:
- insertImage(url, column, row)
相关文章