仅使用 javascript 将信息提交到 Google Drive 电子表格

2024-03-21

我基本上正在寻找一种仅使用 javascript 将信息提交到 Google Drive 电子表格的方法。更改特定单元格的值就是我所追求的。有人知道这是否可能吗? 谢谢。


这是在本地主机中工作的正确代码,就像在网站中一样,如果您有适当的客户端 ID 和浏览器的 API 密钥,我采用相同的 javascript 并将其放入 sencha-touch 和phoneGap 应用程序中,但它不起作用你对此有什么想法吗? :

<!DOCTYPE html>
<!--
  Copyright 2011 Google Inc. All Rights Reserved.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<html>
  <head>
    <title>JavaScript API Example</title>

    <style type="text/css">
      body { font-family: Arial; }
    </style>
    <script type="text/javascript">
      // The clientId and apiKey are available at
      // https://code.google.com/apis/console. For more information, see
      // http://code.google.com/p/google-api-javascript-client/wiki/Authentication.
      var clientId = '958693490238-nti7k45ajor0287286o8a5p4m26um32n.apps.googleusercontent.com';
      var clientSecret = 'p--MYTDoaqliiiSmP4TPFZX5';
      var apiKey = 'AIzaSyCa_oJyC4vX1KAbNoi0n0Zyqf_ZWTp8J7U';
      var scopes = 'https://www.googleapis.com/auth/fusiontables';
      var tableId;

      // Initialize the client, set onclick listeners.
      function initialize() {
        gapi.client.setApiKey(apiKey);
        document.getElementById('create-table').onclick = createTable;
        document.getElementById('insert-data').onclick = insertData;
        document.getElementById('select-data').onclick = selectData;
        window.setTimeout(function() { auth(true); }, 1);
      }

      // Run OAuth 2.0 authorization.
      function auth(immediate) {
        gapi.auth.authorize({
          client_id: clientId,
          client_secret: clientSecret,
          scope: scopes,
          immediate: immediate
        }, handleAuthResult);
      }

      // Handle the results of the OAuth 2.0 flow.
      function handleAuthResult(authResult) {
        var authorizeButton = document.getElementById('authorize-button');
        var createTableButton = document.getElementById('create-table');
        if (authResult) {
          authorizeButton.disabled = true;
          createTableButton.disabled = false;
        } else {
          authorizeButton.disabled = false;
          authorizeButton.onclick = function() { auth(false); return false; };
        }
      }

      // Run a request to create a new Fusion Table.
      function createTable() {
        var tableResource = [];
        tableResource.push('{');
        tableResource.push('"name": "People",');
        tableResource.push('"columns": [');
        tableResource.push('{ "name": "Name", "type": "STRING" },');
        tableResource.push('{ "name": "Age", "type": "NUMBER" }');
        tableResource.push('],')
        tableResource.push('"isExportable": true');
        tableResource.push('}');
        runClientRequest({
          path: '/fusiontables/v1/tables',
          body: tableResource.join(''),
          method: 'POST'
        }, function(resp) {
          var output = JSON.stringify(resp);
          document.getElementById('create-table-output').innerHTML = output;
          tableId = resp['tableId'];
          document.getElementById('table-id-1').innerHTML = tableId;
          document.getElementById('table-id-2').innerHTML = tableId;
          document.getElementById('insert-data').disabled = false;
          document.getElementById('select-data').disabled = false;
          document.getElementById('create-table').disabled = true;
        });
      }

      // Run a request to INSERT data.
      function insertData() {
        var name = document.getElementById('name').value;
        var age = document.getElementById('age').value;
        var insert = [];
        insert.push('INSERT INTO ');
        insert.push(tableId);
        insert.push(' (Name, Age) VALUES (');
        insert.push("'" + name + "', ");
        insert.push(age);
        insert.push(')');
        query(insert.join(''));
      }

      // Run a request to SELECT data.
      function selectData() {
        query('SELECT * FROM ' + tableId);
      }

      // Send an SQL query to Fusion Tables.
      function query(query) {
        var lowerCaseQuery = query.toLowerCase();
        var path = '/fusiontables/v1/query';
        var callback = function(element) {
          return function(resp) {
            var output = JSON.stringify(resp);
            document.getElementById(element).innerHTML = output;
          };
        }
        if (lowerCaseQuery.indexOf('select') != 0 &&
            lowerCaseQuery.indexOf('show') != 0 &&
            lowerCaseQuery.indexOf('describe') != 0) {

          var body = 'sql=' + encodeURIComponent(query);
          runClientRequest({
            path: path,
            body: body,
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded',
              'Content-Length': body.length
            },
            method: 'POST'
          }, callback('insert-data-output'));

        } else {
          runClientRequest({
            path: path,
            params: { 'sql': query }
          }, callback('select-data-output'));
        }
      }

      // Execute the client request.
      function runClientRequest(request, callback) {
        var restRequest = gapi.client.request(request);
        restRequest.execute(callback);
      }
    </script>
    <script src="https://apis.google.com/js/client.js?onload=initialize"></script>
  </head>
  <body>
    <h1>
      Fusion Tables JavaScript Example
    </h1>
    <h2>
      (1) Authorize using OAuth 2.0
    </h2>
    <p>
      Click Authorize to start the OAuth 2.0 authorization flow. If you have
      already authorized, the button will be disabled.
    </p>
    <input type="button" id="authorize-button" value="Authorize"><br>

    <h2>
      (2) Create Table
    </h2>
    <p>
      Click "Create Table" to create an exportable Fusion Table called "People"
      with columns "Name" with type "STRING" and "Age" with type "NUMBER".
      <pre>
{
  "name": "People",
  "columns": [
    {
      "name": "Name",
      "type": "STRING"
    }, {
      "name": "Age",
      "type": "NUMBER"
    }
  ],
  "isExportable": true
}</pre>
    </p>
    <input type="button" id="create-table" value="Create Table"
        disabled="disabled">
    <p id="create-table-output"><i>table response goes here...</i></p><br>

    <h2>
      (3) Insert data
    </h2>
    <p>
      Insert data into the newly created table.
    </p>
    <pre>INSERT INTO <span id="table-id-1">[table_id]</span> (Name, Age) VALUES ([name], [age])</pre>
    <label>Name:</label>
    <input type="text" id="name"><br>
    <label>Age:</label>
    <input type="age" id="age"><br>
    <input type="button" id="insert-data" value="Insert data"
        disabled="disabled">
    <p id="insert-data-output"><i>insert response goes here...</i></p><br>

    <h2>
      (4) Select all the rows from the table
    </h2>
    <p>
      Select the data that has been inserted into the newly created table.
    </p>
    <pre>SELECT * FROM <span id="table-id-2">[table_id]</span></pre>
    <input type="button" id="select-data" value="Select data"
        disabled="disabled">
    <p id="select-data-output"><i>select response goes here...</i></p>
  </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅使用 javascript 将信息提交到 Google Drive 电子表格 的相关文章

  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • 使用 vscode 调试器调试 next.js

    我已经使用安装了一个项目创建下一个应用程序 https github com segmentio create next app 我需要使用我的编辑器 vscode 调试服务器端渲染 所以我访问过vscode recipes 如何调试 ne
  • 关闭选项卡时要求确认[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我在某些浏览器上关闭页面时 我希望出现一个消息框 并询问我是否真的要关闭页面 有两个按钮 如果我单击No那么这个标签就不会被关闭 我怎样
  • Android 设备上的 PhoneGap 蓝牙插件

    我一直在尝试让 PhoneGap 工作的蓝牙插件 但我似乎不知道哪里出了问题 首先 我的测试设备是 Galaxy S3 GT 19305T 应用程序是使用PhoneGap CLI http docs phonegap com en 3 0
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • 检查 JavaScript 字符串是否为 URL

    JavaScript 有没有办法检查字符串是否是 URL 正则表达式被排除在外 因为 URL 很可能是这样写的stackoverflow 也就是说它可能没有 com www or http 如果你想检查一个字符串是否是有效的 HTTP UR
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • Electron - 为什么在关闭事件时将 BrowserWindow 实例设置为 null

    The 电子文档 https electronjs org docs api browser window 提供以下代码示例来创建新窗口 const BrowserWindow require electron let win new Br
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a

随机推荐

  • SDL2 升起窗口而不给予焦点

    我需要在窗口上显示工具提示 我正在使用工具提示创建第二个窗口 并使用 SDL RaiseWindow 将其带到顶部 然而 这样做会导致工具提示窃取焦点 这不是我想要的 有没有办法在不改变焦点的情况下将窗口置于顶部 另外 有没有办法在不改变窗
  • inDither = true Android

    有人可以解释一下设置时到底发生了什么吗抖动 true在 Android 中配置位图的上下文中 在 Developer Android 上可以阅读有关静态变量的信息 Config RGB 565 根据源的配置 此配置可能会产生轻微的视觉伪影
  • 为什么Java的SimpleDateFormat不是线程安全的? [复制]

    这个问题在这里已经有答案了 请用代码示例说明为什么 SimpleDateFormat 不是线程安全的 这堂课有什么问题 是SimpleDateFormat的格式化函数的问题 请给出在课堂上演示此错误的代码 FastDateFormat 是线
  • 如何在PyUsb中绑定/取消绑定USB设备?

    我需要在 python 脚本上打开 关闭多个 USB 设备 我可以使用 PyUsb 绑定和取消绑定 USB 设备吗 我可以使用 shell 命令来做到这一点 关闭电源 echo device nuber gt sys bus usb dri
  • SQLite - 表约束唯一和列约束唯一之间有什么区别?

    关于 SQLite 的问题 在 CREATE TABLE SQL 中 我们可以通过以下任一方式添加 UNIQUE 约束 列约束或表约束 我的问题很简单 他们的工作方式不同吗 我能发现的唯一区别是 在表约束中 可能有多个indexed col
  • 找出 MySQL 在 Mac OS X 上的安装位置

    如何找出 Mac OS X 10 7 9 上 MySQL 的安装位置 我安装了 MAMP 所以我认为它与此安装捆绑在一起 要检查 MAMP 的 MySQL 版本 请在终端中使用以下命令 Applications MAMP Library b
  • DOCX w:t(文本)元素跨越多个 w:r(运行)元素?

    我们编写了一个软件 可以从 Word 文档的内部 XML 文件中处理 XML 并用替换值替换某些代码 有时我们发现此类代码在多次运行之间被破坏 以下是我们有时会遇到的此类情况的示例
  • 为子类添加额外的“方法”

    这是一个概念性问题 旨在了解如何在 C 中完成 OOP 技术 我知道它不实用或不推荐 并且有许多语言可以更好地实现此目的 但我只是看看作为初学者如何完成它到 C 假设我有一个名为的基础对象Thing 它将有一些数据和一些功能 然后我想添加另
  • 出现 TypeError:this.props 在 ReactJs 上未定义

    我正在尝试做教程 https facebook github io react docs tutorial html https facebook github io react docs tutorial html import Reac
  • 带有“fromCharCode”(字符长度)的 Javascript 映射数组

    以下内容来自 Chrome 控制台中的交互式会话 myarray gt 67 65 84 String fromCharCode 67 gt C String fromCharCode 67 length gt 1 String fromC
  • 可利用的 C# 函数 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这个问题类似于可利用的 PHP 函数 https stackoverflow com questions 3115559 exploi
  • Kendo UI 绑定弹出编辑器中的下拉值

    我有一个 Kendo 网格 它可以选择使用弹出编辑器添加新记录 弹出编辑器中的一个字段是 DropDownList 当我打开弹出编辑器时 我从下拉列表中预先选择了第一条记录 由于我预先选择了它 我希望它在网格内自动创建 绑定 当按 更新 时
  • Python 会缓存重复访问的文件吗?

    我想知道 Python 是否足够聪明 可以缓存重复访问的文件 例如当使用 pandas 读取相同的 CSV 或多次 unpickle 相同的文件时 这是否是 Python 的责任 还是应该由操作系统来处理 不 Python 只是一种语言 它
  • Snakemake - 如何使用文件的每一行作为输入?

    我需要使用文件的每一行tissuesused txt作为snakemake中并行规则的输入 我想总共大约有 48 个工作机会 for line in cat tissuesused txt do echo Sorting line phen
  • 如何与具有哈希属性的 Perl 对象交互?

    我有一个包含多个变量的类 其中一个是散列 runs sub new my class name my self name gt name runs gt times gt bless self class return self 现在 我要
  • 无法访问VueJS中的根数据

    这是我在 stackoverflow 上的第一篇文章 如果我做错了什么 请提前抱歉 我的问题 我已经设置了一个 VueJS 项目 并且正在尝试从另一个组件获取放入 App vue 中的数据 为此 我使用 this root count 为例
  • 带条件的 LINQ to SQL 急切加载

    我正在尝试学习 LINQ to SQL 并且发现了 LoadWith 函数 我找到的所有示例都会加载您在 LoadWith 函数中指定的表中的所有记录 例如 var dlo new DataLoadOptions dlo LoadWith
  • 在 IMAP 收件箱中搜索来自特定发件人的邮件并使用通配符?

    是否可以使用通配符在 IMAP 文件夹中搜索特定发件人 typ data M SEARCH None from security website IMAP RFC 3501 6 4 4 https www rfc editor org rf
  • 如何在 C# 6.0 中实现 INotifyPropertyChanged?

    答案是这个问题 https stackoverflow com questions 1315621 implementing inotifypropertychanged does a better way exist 1316417 13
  • 仅使用 javascript 将信息提交到 Google Drive 电子表格

    我基本上正在寻找一种仅使用 javascript 将信息提交到 Google Drive 电子表格的方法 更改特定单元格的值就是我所追求的 有人知道这是否可能吗 谢谢 这是在本地主机中工作的正确代码 就像在网站中一样 如果您有适当的客户端