将 Google 驱动器与远程 Web 服务器同步

Synchronize Google drive with remote web server

根据主题,我需要将某些 Google 驱动器文件夹的内容与共享远程服务器(网站)中的相同内容同步。通常在服务器本身上,对于内部事务,我使用 cron。但在这种情况下,我不知道正确的解决方案是什么。我在网上看了看,但尽管有想法,但我不确定是否要构建特定的蜜蜂,或者是否有更实用的方法。感谢有耐心回答的人

如何创建一个 Google Apps Script Web app deployment,并将其用作 REST API?

这些是要遵循的步骤:

  1. 创建一个 new Google Apps 脚本项目。
  2. 创建一个将内容作为 JSON 提供的 Web 应用程序。在我的示例中,我将列出 Google Drive 的文件夹,但您可以随意使用它。在这个例子中,我正在实施一个简单的 API 密钥系统来防止不必要的访问。
Code.gs
const getDriveFolders = () => {
  const listFolders = []
  const folderIterator = DriveApp.getFolders()
  while (folderIterator.hasNext()) {
    listFolders.push(folderIterator.next().getName())
  }
  return listFolders
}

const errMsgRes = ContentService
  .createTextOutput()
  .append(JSON.stringify({ "msg": "INVALID API KEY" }))
  .setMimeType(MimeType.JSON)


const succMsgRes = ContentService
  .createTextOutput()
  .setContent(JSON.stringify(getDriveFolders(), null, 2))
  .setMimeType(MimeType.JSON)

const doGet = (e) => {
  return e.parameter.api_key != "123123"
    ? errMsgRes
    : succMsgRes
}
  1. 单击 Deploy > Select type > Wep app。在 Who has acces 字段中,我将其设置为 Anyone。抓住 URL 以备后用。
  2. 在您的网站中,您只需要获取数据。
index.html
<div id="drive-content" ></div>
<script>
const GASURL = "<DEPLOYMENT_URL>";

const container = document.getElementById("drive-content");

fetch(GASURL + "?api_key=123123")
  .then((d) => d.json())
  .then((d) => {
    console.log(d);
    container.innerHTML += d.join("<br />");
  });
</script>

这样,每次您进入您的网站,内容都会更新。

文档