[英]Function passes undefined to called function in Google Apps Script
我是 Google Apps 脚本的新手,有些功能似乎很难让我理解。 在我的代码中:(仔细查看正文末尾附近的脚本元素)
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<style>
//some code ...
</style></head>
<body>
<div><h1>Cabeçalho escolar</h1></div>
<div class="palco">
<img id="dataShow"/>
</div>
<script>
function whenReady(dataImage) //shows the content png image
{
document.getElementById("dataShow").scr = "image/png;base64;"+dataImage; //I dont know if this will work; dataImage should be a base64Encode output from a blob png (that was zipped together with others files)
//the second parameter is a index to pick up the png file.
}
google.script.run.withSuccessHandler(whenReady).getFromZippedData("example.zip",0)
</script>
</body>
</html>
getFromZippedData
function 应该将其返回值传递给whenReady
function。 但是,为此,它调用另一个 function ( getPic
),将其第一个参数传递给这样的 function。 见下图:
function getPic(fileName) {
var pasta = 'DirectoryName';
var arquivos = DriveApp.getRootFolder().getFoldersByName(pasta).next().getFiles(); // yes, the first match... for while, assume that exists such folder
while( arquivos.hasNext() )
{
var candidato = arquivos.next();
if( candidato.getName() === fileName )
{
return Utilities.unzip( candidato.getBlob() );
}
}
Logger.log("Erro ao procurar o arquivo \""+fileName+"\" na função getPic") // aula
return null;
}
function getFromZippedData( picFile , num )
{
var slides = getPic( picFile ); // <-- THIS IS THE POINT (main)
if( 0 < num )
num = 0;
if( num >= slides.length )
num = slides.length - 1;
return Utilities.base64Encode( slides[num] );
}
问题
没有参数从getFromZippedFile
传递给getPic
( Logger
指责undefined
的参数给picFile
)。
问题?
如何正确地将参数从 function 传递到“google-side” function? 使用的参数是原始 javascript 类型,如 Google Apps 脚本参考中所述。 是否需要“谷歌端”function?
附带问题(如果不暗示“重复”)
如何在 HTML 文档中显示解压缩的 Blob(即 png 图像)的内容?
抱歉,如果我提出了一个愚蠢的问题,但我在这方面花了很多时间。 修改了这个最小的代码,但可能有问题。 我现在真的很累。 可能会出现一些错误。 忽略它们(如果可能的话)并向我提供有关它们的建议。
我相信你的问题如下。
No parameter is pass from getFromZippedFile to getPic (Logger accuses undefined paramter to picFile.)
问题的原因。为此,这个答案怎么样?
我认为您的问题的原因是Utilities.base64Encode( slides[num] );
slides[num]
slides[num] 是Blob
。 在这种情况下,请使用字节数组。 因此,请按如下方式修改您的脚本。
return Utilities.base64Encode( slides[num] );
return Utilities.base64Encode(slides[num].getBytes());
slides[num]
是 blob。我认为将 base64 编码图像放在 HTML 端有一个修改点。 请进行如下修改。
document.getElementById("dataShow").scr = "image/png;base64;"+dataImage;
document.getElementById("dataShow").src = "data:image/png;base64,"+dataImage;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.