当前位置: 首页 > 知识库问答 >
问题:

Google Sheets API变量

吴建中
2023-03-14

我对编码有点陌生。我必须做一些东西,从超文本标记语言表单提交数据到谷歌表。我启用了API并遵循了所有步骤。现在我尝试使用变量firstName,lastName,phoneNumber和email来允许输入在单击提交按钮时提交。我没有使用表格,但如果需要,我愿意使用它。再次澄清一下:当你将文本放入输入框时,它应该在点击提交后将其附加到谷歌表格中。您需要一个端口为8000的python本地服务器,并运行html文件使其工作。

这里的问题是,我无法使用变量(firstName、lastName、email和phoneNumber)代替execute函数中“values”部分的字符串。每当我单击execute按钮时,它都会附加字符串,例如“Place_Holder”,但当我输入firstName时,它不会附加。很抱歉这么长时间的解释。这是我第一次在这里发帖。

<!DOCTYPE html>
<html>
<head>
    <title>googleapi</title>
</head>
<body>
    <h1>Information Form</h1>
    <div>
    <p>First Name:</p>
    <input type="text" id="firstNameInput">
    </div>
    
    <div>
    <p>Last Name:</p>
    <input type="text" id="lastNameInput">
    </div>
    
    <div>
    <p>Email:</p>
    <input type="text" id="emailInput">
    </div> 
    
    <div>
    <p>Phone Number:</p>
    <input type="number" id="phoneNumberInput">
    </div>
    
    <button id="submitButton">Submit</button>
<p id="submitMessage"></p>
<script>
document.getElementById("submitButton").addEventListener("click", displayMessage );
function displayMessage() {
    var firstName = document.getElementById('firstNameInput').value;
    var lastName = document.getElementById('lastNameInput').value;
    var email = document.getElementById('emailInput').value;
    var phoneNumber = document.getElementById('phoneNumberInput').value;
    document.getElementById("submitMessage").innerHTML = "Hello " + firstName + " " + lastName + " your information has been submitted";
}
</script>
</body>
</html>
<script src="https://apis.google.com/js/api.js"></script>
<script>
  /**
   * Sample JavaScript code for sheets.spreadsheets.values.append
   * See instructions for running APIs Explorer code samples locally:
   * https://developers.google.com/explorer-help/guides/code_samples#javascript
   */

  function authenticate() {
    return gapi.auth2.getAuthInstance()
        .signIn({scope: "https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/spreadsheets"})
        .then(function() { console.log("Sign-in successful"); },
              function(err) { console.error("Error signing in", err); });
  }
  function loadClient() {
    return gapi.client.load("https://content.googleapis.com/discovery/v1/apis/sheets/v4/rest")
        .then(function() { console.log("GAPI client loaded for API"); },
              function(err) { console.error("Error loading GAPI client for API", err); });
  }
</script>
<script>
  // Make sure the client is loaded and sign-in is complete before calling this method.
  function execute() {
    return gapi.client.sheets.spreadsheets.values.append({
      "spreadsheetId": "*removed*",
      "range": "A1:D2",
      "includeValuesInResponse": "false",
      "insertDataOption": "INSERT_ROWS",
      "responseDateTimeRenderOption": "SERIAL_NUMBER",
      "valueInputOption": "USER_ENTERED",
      "resource": {
        "values": [
          [
            "Place_Holder",
            "Place_Holder",
            "Place_Holder",
            "Place_Holder"
          ]
        ]
      }
    })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }
  gapi.load("client:auth2", function() {
    gapi.auth2.init({client_id: '*removed*'});
  });
</script>
<button onclick="authenticate().then(loadClient)">authorize and load</button>
<button onclick="execute()">execute</button>

<script src="main.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css">

`

共有1个答案

田文景
2023-03-14

我理解你的处境和你想做的事情如下。

  • 在当前情况下,可以使用Sheets API将字符串放入电子表格

如果我的上述理解是正确的,那么这次修改如何?

我认为变量不能放在Sheet中的原因是当运行执行()时没有检索到变量。因此,当运行执行()时,它会进行修改以检索变量。

请修改如下。运行此脚本时,请按浏览器上的执行按钮。

function execute() {
  return gapi.client.sheets.spreadsheets.values.append({
    "spreadsheetId": "*removed*",
    "range": "A1:D2",
    "includeValuesInResponse": "false",
    "insertDataOption": "INSERT_ROWS",
    "responseDateTimeRenderOption": "SERIAL_NUMBER",
    "valueInputOption": "USER_ENTERED",
    "resource": {
      "values": [
        [
          "Place_Holder",
          "Place_Holder",
          "Place_Holder",
          "Place_Holder"
        ]
      ]
    }
  })
function execute() {
  var firstName = document.getElementById('firstNameInput').value;
  var lastName = document.getElementById('lastNameInput').value;
  var email = document.getElementById('emailInput').value;
  var phoneNumber = document.getElementById('phoneNumberInput').value;
  return gapi.client.sheets.spreadsheets.values.append({
    "spreadsheetId": "*removed*",
    "range": "A1:D2",
    "includeValuesInResponse": "false",
    "insertDataOption": "INSERT_ROWS",
    "responseDateTimeRenderOption": "SERIAL_NUMBER",
    "valueInputOption": "USER_ENTERED",
    "resource": {
      "values": [
        [
          firstName,
          lastName,
          email,
          phoneNumber
        ]
      ]
    }
  })
  • 这是一个简单的修改。因此,请针对您的环境修改此选项

如果我误解了你的问题,这不是你想要的,对不起。

 类似资料:
  • 我使用Google Sheets API在我的javascript应用程序中显示我的Google电子表格中的数据。已通过引用此留档开发。我可以从电子表格中读取值,但对于某些列,单元格合并如下。 我得到的Json响应如下所示 我的预期输出应该是 有什么帮助吗?

  • GoogleSheets文档可以包含一些表单。第一个是默认值和“0”。一般情况下,任何工作表都有如下地址: https://docs.google.com/spreadsheets/d/(spreadsheetId)/编辑#gid=(sheetId) 同时具有和。 但是在API文档中没有提到如何使用。我只能读取和编辑给定的默认表格。 如果在来自示例性链接中显示的代码,我添加了属性,我得到错误:

  • 我有一个谷歌表,我想从我们的服务器更新它的数据。目前我正在使用谷歌工作表脚本编辑器。 但是我开始意识到还有另一种方法可以更新我的谷歌表格。那就是使用谷歌表单apihttps://developers.google.com/sheets/api/samples/writinghttps://developers.google.com/sheets/api/reference/rest/https:/

  • 在我的Android应用程序,我想追加一行(与新的食品订单信息)到谷歌表格的顶部。从https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append留档听起来我只能追加到表的底部。但是我真的需要从顶部追加新行,我怀疑这是不可能的。 我能够使用以下代码将行追加到底部: 是否可以将该行附加到表的顶

  • 我正在开发一个Android应用程序,它使用谷歌电子表格作为数据库。应用程序应该使用Sheets API v4获取、附加和更新电子表格中的值。前两个函数工作正常,但我很难更新特定行。我需要找到在第一列(“批次ID”)中有特定值的行,并更新此行中的所有单元格。 现在我得到的行被修改为这样: 这实际上运行良好,但我认为这是一个丑陋的解决方案,我相信有一个更好的解决方案。 我已经阅读了工作表API留档,

  • 如果我想发布Google Sheets电子表格,以便将其嵌入iframe中的页面,我会手动执行以下操作: 导航到谷歌驱动器 打开一个电子表格 文件 如何在前端使用JavaScript通过GoogleSheetsAPI编程实现上述功能?我正在应用程序中动态生成电子表格,并希望在创建后立即将其嵌入页面。 创建工作表后,我可以使用必要的属性(工作表ID等)动态创建iframe元素。这是一个错误。从这个问

  • 我的谷歌页面上有几个栏目。列数随时间变化(将来可能会添加新列)。如果我的床单看起来像这样,我想得到一张地图或类似的东西: 查看我的工作表 API调用的响应: 换句话说,我想在api响应的工作表中获取列名及其标签。或者,任何类似的方法也会起作用。我不知道该做什么API调用。我知道调用,但我不知道如何获取此表中列的标签。我只能得到一定范围内的数据。我不知道如何获得列的标签。

  • 问题内容: 我如何在for循环中创建变量变量? 这是循环: 在此循环中,我想为每次传递创建一个$ seat变量,但必须像这样递增。第一次通过应该是,下次通过:等等。 所以最后应该是: 等等。 因此$ _POST的变量和内容应该是动态的。 问题答案: 首先,除非缺少某些内容,否则我将为此使用数组。具有像变量,等趋于具有少得多的效用和是更为繁琐比使用的阵列。 话虽这么说,使用以下语法: 最后,PHP具