Google apps script 谷歌脚本,下载用户输入的文件

Google apps script 谷歌脚本,下载用户输入的文件,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我已经编写了以下GoogleApps脚本,它记录文件名并生成文件的直接下载链接。到目前为止,它工作得很好 函数搜索文件(){ var searchFor='title包含“字母”'; 变量名称=[]; var fileIds=[]; var files=DriveApp.searchFiles(searchFor); while(files.hasNext()){ var file=files.next(); var fileId=file.getId();//获取文件的fileId file

我已经编写了以下GoogleApps脚本,它记录文件名并生成文件的直接下载链接。到目前为止,它工作得很好

函数搜索文件(){
var searchFor='title包含“字母”';
变量名称=[];
var fileIds=[];
var files=DriveApp.searchFiles(searchFor);
while(files.hasNext()){
var file=files.next();
var fileId=file.getId();//获取文件的fileId
fileId.push(fileId);
var name=file.getName();
name.push(name);
}

对于(var i=0;i首先,您需要脚本文件中的
doGet()
函数,该函数通常位于:

代码 然后需要主HTML表单,通常命名为:

指数

这里是页面的标题
在线实验室报告
输入您的实验室ID:
获取下载链接
JS_主页代码:

函数更新显示(arrayOfUrls){
console.log('arrayOfUrls:'+arrayOfUrls);
if(arrayOfUrls==='No Search String'){return;};
var headingText=“显示“+arrayOfUrls+”文件夹的arrayOfUrls:”;
document.getElementById('main-heading')。textContent=headingText;
var dataLngth=阵列长度;
log('dataLngth:'+dataLngth);
对于(变量i=0;i
如果希望在单独的文件中使用CSS样式,则创建一个带有
标记的HTML文件,然后使用模板化HTML将单独的文件包含到索引文件中

在上面的示例中,索引文件是模板化的HTML,带有以下行:

<?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
<?!= HtmlService.createHtmlOutputFromFile('JS_MainPageCode').getContent(); ?>


你将如何与用户交互?一个Web应用程序?一个电子表格中的侧栏?一个文档中的对话框?你可以这样说。这将是一个简单的门户类事情,在一个文本框中,用户应该输入他/她的ID,他/她将看到“下载链接”(ID.pdf)。因此,问题归结为-将用户输入传递到
var serachFor
并返回
https://drive.google.com/uc?export=download&id=“+fileId
到web门户。非常感谢您的详细回答。您完全理解这个问题!但是,我发现此错误
未找到名为样式表的HTML文件。(第5行,文件“code”)
在运行代码时。我已将JS_MainPageCode.JS添加为HTMl文件。可以吗?我已将行更改为“`”,带有文本字段和“获取下载链接”的页面正在打开。但是,当我输入搜索词时,没有返回任何内容。我想我无法正确添加JS_MainPageCode.JS,因为我已将其添加为JS_MainPageCode.HTMl,找不到其他方法来添加JavaScript文件,或者我丢失了什么?您需要删除以下行:
,或者创建一个名为
样式表的HTML文件
。以避免第5行出现错误。
JS\u MainPageCode
必须是HTML文件,但不要在文件名上添加
.JS
扩展名。我已经尝试了这两种方法删除相关行并添加空白HTML文件以避免错误。两者都会产生相同的结果-完全打开页面,询问用户的文件名,但不返回任何内容。如何检查
userInput
是否通过?如果
userInput
通过,则函数
SearchFiles()
应该会返回一些东西,因为我有与我给出的搜索查询相匹配的文件,它在日志中显示链接,当作为静态
searchFor
函数单独运行时。我看到了您在脚本中所做的更改。不知道为什么我仍然无法让它工作。我是否犯了任何错误?即使我已将项目保存在另一个名称,并尝试使用“发布”-->“部署为web应用…”-->“测试web应用以获取最新代码”。这不是通常的方法吗?无论我输入什么-数字、字母,甚至保持空白并按“获取下载链接”,页面都不会返回任何内容。这里出了什么问题?
<!DOCTYPE html>
<html>

  <body>
    <h1>
    The Title of The Page Here
    </h1>
    <h2 id="main-heading">Online Lab reports</h2>
    <div class="block result-display" id="results">
      Enter your Lab_ID: <input id="idFileName" type="text" placeholder="Enter the file name">
      <div class="hidden" id="error-message">

      </div>
    </div>

    <div id='idMyMessage'>

    </div>

    <button onmouseup="getTheData()">Get Download Link</button>

    <!-- Use a templated HTML printing scriptlet to import JavaScript. -->
    <?!= HtmlService.createHtmlOutputFromFile('JS_MainPageCode').getContent(); ?>
  </body>
</html>
<script>
  function updateDisplay(arrayOfUrls) {
    console.log('arrayOfUrls: ' + arrayOfUrls);

    if (arrayOfUrls === 'No Search String') {return;};

    var headingText = "Displaying arrayOfUrls for " + arrayOfUrls + " folder:";

    document.getElementById('main-heading').textContent = headingText;

    var dataLngth = arrayOfUrls.length;
    console.log('dataLngth: ' + dataLngth);

    for (var i = 0; i < dataLngth; i++) {
      var name = arrayOfUrls[i];
      document.getElementById('results').insertAdjacentHTML('beforeend', '<div>' + name + '</div>');
    }
  }

  window.getTheData = function() {
    var userInput = document.getElementById("idFileName").value;
    console.log('userInput: ' + userInput);

    document.getElementById('results')innerHTML = "";//Reset to blank in case there was an error message

    if (userInput === '') {
      document.getElementById('results').insertAdjacentHTML('beforeend', '<div>' + 'Please Enter a File Name' + '</div>');
      return;
    };

    google.script.run
      .withSuccessHandler(updateDisplay)
      .SearchFiles(userInput);
  };
</script>
<?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
<?!= HtmlService.createHtmlOutputFromFile('JS_MainPageCode').getContent(); ?>