Google apps script 谷歌应用程序脚本:是否有可能获取存储在用户个人硬盘中的blob文件,将其插入电子表格?
我创建了一个web应用程序,要求用户手动签署一个spreasheet文档。 为了做到这一点,我编写了以下代码:Google apps script 谷歌应用程序脚本:是否有可能获取存储在用户个人硬盘中的blob文件,将其插入电子表格?,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我创建了一个web应用程序,要求用户手动签署一个spreasheet文档。 为了做到这一点,我编写了以下代码: function saveSign(url){ // url = canvas.toDataURL("image/png"); const email = Session.getActiveUser().getEmail(); const base64 = url.split(",")[1]; const decoded = Uti
function saveSign(url){ // url = canvas.toDataURL("image/png");
const email = Session.getActiveUser().getEmail();
const base64 = url.split(",")[1];
const decoded = Utilities.base64Decode(base64);
const blob = Utilities.newBlob(decoded, MimeType.PNG, email);
const file = DriveApp.createFile(blob);
return true;
};
此代码将在使用此web应用的每个用户个人驱动器中创建一个包含用户电子邮件标题的文件
一切都很好,但当我尝试用下面的代码将刚刚创建或已经创建并存储在电子表格用户个人驱动器中的图片插入时,会发生错误
const ssDA = SpreadsheetApp.openById("idSpreadsheet");
const wsDA = ssDA.getSheetByName("sheetName");
let uBlob;
const files = DriveApp.getFiles();
while (files.hasNext()) {
let file = files.next();
let fFileName = file.getName();
if(fFileName === ufileName){
uBlob = file.getBlob();
}
}
wsDA.insertImage(uBlob, 12, 32); // Error in this line
控制台日志错误:
异常:参数无效:url
当我尝试插入存储在驱动器中的图像时,一切正常,但当同事尝试插入存储在个人驱动器中的图像时,上述代码不起作用
实际上,while循环(var文件)在我的个人文件夹中迭代,而不是在用户个人文件夹中迭代
请参见以下web应用部署信息:
以用户身份执行应用程序:访问web应用程序的用户
您能帮助我吗?我不知道您是否设置了web应用程序(权限、脚本是否链接到电子表格、独立、每个用户是否必须拥有自己的电子表格),但这里有一个与您类似的示例 说明: 我有我的主要帐户和一个朋友的帐户 在主要账户中:
function insertImg(文件名){
const ssDA=SpreadsheetApp.openById(“{spreadsheetid}”);//使用新的电子表格id
const wsDA=ssDA.getSheetByName(“{sheetname}”);
const ufileName=文件名
const files=DriveApp.getFiles();
while(files.hasNext()){
让file=files.next();
让fFileName=file.getName();
if(fFileName==ufileName){
uBlob=file.getBlob();
}
}
wsDA.insertImage(uBlob,10,10);
}
函数testInsert(){//这是测试函数
insertImg(“doggo.jpg”)
}
函数doGet(e){
return HtmlService.createHtmlOutFromFile(“page”);//接下来我们将创建此页面
}
你好
运行函数
document.getElementById(“btn”)。addEventListener(“单击”,doStuff);
函数doStuff(){
google.script.run.insertImg(“doggo.jpg”);//下面是测试函数的运行情况。
};
以以下身份执行应用程序:访问web应用程序的用户
,谁有权访问该应用程序:任何人
我能问一下你的问题吗?1.脚本中的
Exception:Argument non-valide:url
错误发生在哪里?2.关于一切都很好
,我能问一下它的细节吗?3.我可以问一下脚本中使用的作用域吗?@Tanaike:错误发生在wsDA.insertImage(uBlob,12,32)行代码>。当我说一切都好的时候,我想说的是saveSign功能也可以工作,这意味着使用web应用的用户。可以将画布图形保存在自己的个人驱动器中。带有while循环的第二个代码在表单提交后触发。下面列出了脚本作用域:“https://www.googleapis.com/auth/spreadsheets“,”userinfo.email“,”表单“,”script.scriptapp“,”script.send_mail“,”script.external_request“,”drive“
Thks提前发送”!谢谢你的回复。我注意到已经发布了一个答案。在这种情况下,我要尊重现有的答案。它会解决你的问题。