通过AppsScript将数据发布到Google电子表格(私有部署)

时间:2017-06-08 16:50:37

标签: google-apps-script google-api service-accounts

我正在尝试使用HTML表单或AJAX将数据发布到附加到Google电子表格的AppsScript上。我得到了应用程序状态,它适用于部署到“任何人,甚至匿名”的应用程序。

但我的目标是创建JS脚本或PHP,它将使用服务帐户对此电子表格进行身份验证和发布数据。

我找不到任何有用的文件或例子。

这是我的代码:[HTML]

<!DOCTYPE html>
<html>
<body>

<form method="post" action="https://script.google.com/a/macros/domainname/s/AKfycbzVVBWfeffKo7OHdhAtjjgri0ouJ5qIkSjQTpsIISw8/exec">
  First name:<br>
  <input type="text" name="firstname" value="test1">
  <br>
  Last name:<br>
  <input type="text" name="lastname" value="test2">
  <br><br>
  <input type="submit" value="Submit">
</form> 

</body>
</html>

[Apps Script]

function doPost(e) {

  try {
    var doc     = SpreadsheetApp.getActiveSpreadsheet();
    var sheet   = doc.getSheetByName("Sheet1");
    
    
    sheet.getRange(1,1).setValue(JSON.stringify(e.parameters));
    
  }
  catch(error) {
    Logger.log(e);
  }
  finally {
    return;
  }

}

我已经创建了服务帐户并拥有带有clientID,Secrets等的JSON文件。我想我需要以某种方式附加这些数据的POST,但我不知道如何实现这一点,因此Google Apps会对其进行身份验证。

原因在于,出于安全原因,想要此应用的公司无法向拥有该链接的所有人分享文档。

我需要发布以下设置: enter image description here

如果我设置为“域内任何人”,我会得到 enter image description here

所以我想以某种方式执行我的表单,以便它作为该域内的用户执行。

有人可以帮助处理一些文档URL或某些教程等吗?

最诚挚的问候 马特

1 个答案:

答案 0 :(得分:1)

在这种情况下,即使有限制,也没有理由使用服务帐户。

发布应用程序以便像您一样运行,然后所有电子表格调用都将使用您的凭据,而不是使用您的网络应用程序的用户。

此外,它不能在应用程序脚本中使用带有服务帐户的双腿oauth,它只支持三条腿oauth。