如何处理myDrive文件的Access-Control-Allow-Origin

时间:2019-06-06 10:33:52

标签: google-apps-script web-applications cors

问题来自于此注释:

  

有人建议使用div。 HTML要求非常   骨骼的。 3D显示基本上是画布,但需要七个   three.js文件,我自己制作的十个js文件交换参数   和其他变量以及全局变量和.dae collada文件   您可以看到每个3D模型。如果他们可以像这样链接   jQuery可能是解决方案,但我想知道其中的冲突。

Questions on extending GAS spreadsheet usefulness

主要是如果它们可以像jQuery一样链接部分

要链接的文件位于myDrive上。这种想法是,如果我可以将文件复制到GAS编辑器中,将它们直接带入html似乎是安全且灵活的。

code.gs

function sendUrls(){   
   var folder = DriveApp.getFoldersByName("___Blazer").next();
   var sub = folder.getFoldersByName("assembler").next();
   var contents = sub.getFiles();
   var file;
   var data = []
    while(contents.hasNext()) {
       file = contents.next();
       type = file.getName().split(".")[1];
       url = file.getUrl();
       data.push([type,url]);
     }
     return data;
}

html

google.script.run.withSuccessHandler(function (files) {
    $.each(files,function(i,v){
       if(v[0] === "js"){
           $.get(v[1])
       }
    })
})
.sendUrls();

console

第一个网址会打开正确的脚本文件,但我无法识别原始文件。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是正确的答案,因为它依赖于随处可见的cors,即:

function importFile(name){
  var myUrl = 'http://glasier.hk/cors/tba.html';
  var proxy = 'https://cors-anywhere.herokuapp.com/';
  var finalURL = proxy + myUrl;
  $.get(finalURL,function(data) {
     $("body").append(data);
     importNset();
  })
}

function importNset(){
  google.script.run
  .withSuccessHandler(function (code) {
    path = "https://api.myjson.com/bins/"+code;
    $.get(path)
    .done((data, textStatus, jqXHR) => {
      nset = data;
      cfig = nset.cfig;
      start();
      })
    })
  .sendCode();
}

var nset,cfig;
$(document).ready(function(){
  importFile();
});

但是它可以使用我自己的网站作为资源,尽管在我的机器上也可以。

我使用了Gas函数in gas Shop,将八个先前测试过的js文件制作为单个tba.html仅脚本文件。我将工作坊特定的脚本文件替换为google.script.run所需的脚本文件,但仅此而已。如果我可以找到如何对网站进行启用Cors的功能,我想我也许可以演示如何导入脚本以从同一TBA和电子表格界面生成不同的视图。