从Chrome扩展程序中访问Google-Docs API

guicsvcw  于 2023-06-03  发布在  Go
关注(0)|答案(1)|浏览(225)

我想从Firefox / Chrome浏览器扩展中访问Google Docs API /创建Google Docs文档。
我目前的问题是获取访问令牌。
有没有一种方法可以做到这一点,也许不使用云控制台oAuth代码?

np8igboo

np8igboo1#

调用在GAS中注册为Web应用的脚本,并从扩展中获取。
此方法不需要扩展进行身份验证。
下面是一个google sheets的例子。
code.gs

function doGet(e) {
  const p = e.parameter;
  const name = p.name

  const url = "xxxxxxxxxx"; // Google Sheets URL
  const ss = SpreadsheetApp.openByUrl(url);
  const sheet = ss.getSheets()[0];

  for (let row = 2; ; row++) {
    let value = sheet.getRange(row, 1).getValues();
    if (value == "") {
      const dataTime = new Date();

      sheet.getRange(row, 1).setNumberFormat("yyyy/MM/dd H:mm:ss");
      sheet.getRange(row, 1).setValue(dataTime);
      sheet.getRange(row, 2).setValue(name);

      break;
    }
  }
}

manifest.json

{
  "name": "google sheets",
  "version": "1.0",
  "manifest_version": 3,
  "host_permissions": [
    "https://script.google.com/macros/s/*"
  ],
  "action": {
    "default_popup": "popup.html"
  }
}

popup.html

<!DOCTYPE html>
<html>
<style type="text/css">
  * {
    font-size: 150%;
  }
</style>

<body>
  Name<br>
  <input type="text" size=25 id="name"><br>
  <input type="button" id="setTime" value="Set time">
  <script src="myscript.js"></script>
</body>

</html>

myscript.js

const elmName = document.getElementById("name");
const elmSetTime = document.getElementById("setTime");
elmSetTime.onclick = () => {
  let url = "xxxxxxxxxx"; // The URL of the script registered as a web app in GAS.
  const name = encodeURI(elmName.value);
  url += "?name=" + name;
  console.log(url);
  fetch(url, {
    method: "GET",
    mode: "cors"
  })
}

相关问题