Google apps script Google脚本仅在登录时工作

Google apps script Google脚本仅在登录时工作,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,请记住,我是程序员中最新手的,我从一个教程中了解到了这一点 我正在尝试设置一个页面,允许用户(无论是否是Gmail用户)将文件上传到我的Google Drive帐户。人们通常需要给我比电子邮件发送的文件大的文件。我希望能够使用类似于Dropbox的驱动器帐户。我将其发布为一个web应用程序,整个脚本从头到尾都能完美运行,但只有在我登录到浏览器中的我自己的帐户时才能运行。你的第一个想法是我需要允许访问“任何人,甚至匿名”,但我已经做到了。脚本也以“我”的形式执行。未登录时,表单将显示缺少的字段,并

请记住,我是程序员中最新手的,我从一个教程中了解到了这一点

我正在尝试设置一个页面,允许用户(无论是否是Gmail用户)将文件上传到我的Google Drive帐户。人们通常需要给我比电子邮件发送的文件大的文件。我希望能够使用类似于Dropbox的驱动器帐户。我将其发布为一个web应用程序,整个脚本从头到尾都能完美运行,但只有在我登录到浏览器中的我自己的帐户时才能运行。你的第一个想法是我需要允许访问“任何人,甚至匿名”,但我已经做到了。脚本也以“我”的形式执行。未登录时,表单将显示缺少的字段,并生成一个白色屏幕,而不完成任何类型的上载。以下是我未登录时显示的不完整表单:

代码如下:

function doGet(e) {
return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(form) {

try {

var dropbox = "Public Upload";
var folder, folders = DriveApp.getFoldersByName(dropbox);

if (folders.hasNext()) {
  folder = folders.next();
} else {
  folder = DriveApp.createFolder(dropbox);
}

var blob = form.myFile;    
var file = folder.createFile(blob);    
file.setDescription("Uploaded by " + form.myName);

return "<h1>Your File Has Been Uploaded Successfully!</h1><br>To upload additional files simply reload this page and complete the process again.<br><br>Once you have finished uploading all of your files please send me an email to confirm completion.";

} catch (error) {

return error.toString();
}

}
函数doGet(e){
返回HtmlService.createhtmloutpfromfile('form.html');
}
函数上载文件(表单){
试一试{
var dropbox=“公共上传”;
var folder,folders=DriveApp.getFoldersByName(dropbox);
if(folders.hasNext()){
folder=folders.next();
}否则{
folder=DriveApp.createFolder(dropbox);
}
var blob=form.myFile;
var file=folder.createFile(blob);
file.setDescription(“上传人”+form.myName);
return“您的文件已成功上载!
若要上载其他文件,只需重新加载此页面并再次完成此过程。

完成所有文件的上载后,请向我发送电子邮件以确认完成。”; }捕获(错误){ 返回错误。toString(); } }
和form.html

<body style="background:navy; color:white;">
<form id="myForm">

<h1>You Are Uploading Files to Adam</h1>

<label>Name of Uploader (You)</label>
<input type="text" name="myName" placeholder="Full Name">

<label>Brief Description of File</label>
<input type="text" name="fileName" placeholder="Session title, etc.">

<input type="file" name="myFile">

<input type="submit" value="Upload File" 
       onclick="this.value='Uploading..';
                google.script.run.withSuccessHandler(fileUploaded)
                .uploadFiles(this.parentNode);
                return false;">

<p style="color:yellow">Depending on the total size of your file uploading may take a few moments...</p>

</form>
</body>
<div id="output"></div>

<script>
function fileUploaded(status) {
    document.getElementById('myForm').style.display = 'none';
    document.getElementById('output').innerHTML = status;
}
</script>

<style>
input { display:block; margin: 20px; }
</style>

您正在将文件上载到Adam
上传者姓名(你)
文件简介

根据文件上载的总大小,可能需要几分钟

功能文件上传(状态){ document.getElementById('myForm').style.display='none'; document.getElementById('output')。innerHTML=status; } 输入{显示:块;边距:20px;}

同样,新手程序员在这里,但任何帮助将不胜感激。谢谢

我觉得这个密码听起来很有道理。是从哪里来的

我曾多次使用它创建了一个图片上传器,并取得了巨大成功。您的权限似乎设置得很好;你是在使用谷歌的企业版,还是你的标准主流硬盘


我现在知道,在我的公司,一些API和一些服务不能在谷歌应用程序脚本中使用;驱动器是其中之一(管理员不允许使用DriveApp的脚本)。

未登录用户是否能够上载任何文件?如果是,是否返回任何错误消息?我只是简单地复制/粘贴了你的脚本并执行了,一切都很好。我可以上传文件而不必注销。我没有对你的代码做任何更改。尝试新创建一个脚本并发布该脚本?正如@Srikanth所说,您应该尝试的是:在脚本编辑器中,执行发布>部署为web应用程序,然后在项目版本中选择“新建”。复制新的web应用程序URL并测试它是否有效。老实说,我不记得它的确切来源。这只是一个普通的个人硬盘帐户,没有谷歌的企业版