You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Google Drive存储的Materialize.min.js引入Google Apps Script

Google Drive托管Materialize JS文件报错解决方案

M is not defined错误本质是浏览器未正确执行从Google Drive拉取的JS文件内容,核心原因是Google Drive默认返回的JS文件响应头不符合浏览器执行要求。CSS文件对响应头的校验规则比JS宽松很多,所以之前迁移CSS可以正常生效,JS需要额外处理参数和加载逻辑,可按以下步骤修复:

  • 第一步:确认JS文件共享权限
    打开Google Drive找到对应的materialize.min.js文件,右键点击「共享」,设置通用访问权限为「知道链接的任何人」,角色为「查看者」,保存设置。
  • 第二步:使用正确的Google Drive JS调用链接
    不要用export=download参数,改用export=view并追加&confirm=t参数跳过Google Drive的流量校验提示,确保返回的响应类型符合JS执行要求:
    <script src="https://drive.google.com/uc?export=view&id=1SkfRcC1jQwNLRVEUPgjQHSUkEFdg1BND&confirm=t"></script>
    
  • 第三步:调整JS加载顺序,保证Materialize加载完成后再执行自定义JS
    把原有的<?!= include("page-js");?>部分调整为加载监听逻辑,避免自定义JS执行时M对象还未挂载:
    <script src="https://drive.google.com/uc?export=view&id=1SkfRcC1jQwNLRVEUPgjQHSUkEFdg1BND&confirm=t"></script>
    <script>
      window.addEventListener('load', function() {
        if (typeof M !== 'undefined') {
          <?!= include("page-js");?>
        } else {
          // 加载失败自动重试,最多重试3次
          let retryCount = 0;
          const retryInterval = setInterval(() => {
            retryCount++;
            if (typeof M !== 'undefined' || retryCount >= 3) {
              clearInterval(retryInterval);
              <?!= include("page-js");?>
            }
          }, 500);
        }
      })
    </script>
    
  • 第四步:清理浏览器缓存后重新测试,Google Apps Script Web应用部署时建议选择「每次用户访问时都更新」的版本部署模式,避免旧版本缓存影响测试结果。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:54:03