Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过cURL/PHP将新行插入谷歌电子表格-如何?_Php_Google Apps Script_Google Sheets - Fatal编程技术网

通过cURL/PHP将新行插入谷歌电子表格-如何?

通过cURL/PHP将新行插入谷歌电子表格-如何?,php,google-apps-script,google-sheets,Php,Google Apps Script,Google Sheets,有没有关于如何做到这一点的脚本或教程?如何实现将PHP应用程序中的数据插入Google电子表格 我看过API(),没有PHP代码/示例 我已经尝试了Zend库实现,但是这种方法似乎非常过时,因为我在一个简单的行插入中遇到了一些愚蠢的错误 我认为我不能使用GoogleApps脚本(),因为我不知道如何从PHP脚本编码和触发 还有别的吗 难道没有一个可行的API,我们可以很容易地使用和利用它吗 我不认为我可以使用GoogleApps脚本,因为我不知道如何从PHP脚本编码和触发 当然可以。您可以使用G

有没有关于如何做到这一点的脚本或教程?如何实现将PHP应用程序中的数据插入Google电子表格

我看过API(),没有PHP代码/示例

我已经尝试了Zend库实现,但是这种方法似乎非常过时,因为我在一个简单的行插入中遇到了一些愚蠢的错误

我认为我不能使用GoogleApps脚本(),因为我不知道如何从PHP脚本编码和触发

还有别的吗

难道没有一个可行的API,我们可以很容易地使用和利用它吗

我不认为我可以使用GoogleApps脚本,因为我不知道如何从PHP脚本编码和触发

当然可以。您可以使用GoogleApps脚本创建web服务,该脚本可以接收和处理服务请求。将参数传递给web服务很简单,例如,可以使用cURL来完成

以下示例适用于具有两列的简单电子表格。您可以通过以下方式添加更多行:

curl -L <SCRIPT URL>?col1='Value for column 1'&col2='Another value'
说明书 这是一个循序渐进的过程

  • 打开谷歌电子表格,确保电子表格完全可访问(公共)
  • 工具-->脚本编辑器
  • 复制下面的代码并粘贴到编辑器中
  • 用工作表的id替换
    --电子表格id--
    (很容易找到)
  • 文件-->保存
  • 发布-->部署为web应用-->版本=新建;根据需要设置访问权限
  • 授权(将提示您获取凭据)-->部署
  • 现在,您将获得脚本的URL
  • ?col1='Colum1Data'&col2='Colum2Data'
    附加到URL,或根据需要进行编辑,以将数据从URL推送到电子表格中
  • 完成
  • (感谢vr00n。)

    代码.gs 这可能是一个独立的或容器绑定的脚本;无论哪种方式,您都需要提供电子表格的ID,因为web应用程序不在电子表格上下文中运行。它不显示html,而是使用-您可以用适合您的应用程序的任何方式详细说明

    function doGet(e) {  
      Logger.log( JSON.stringify(e) );  // view parameters
    
      var result = 'Ok'; // assume success
    
      if (e.parameter == undefined) {
        result = 'No Parameters';
      }
      else {
        var id = '--spreadsheet-id--'; // Spreadsheet id
        var sheet = SpreadsheetApp.openById(id).getActiveSheet();
        var newRow = sheet.getLastRow() + 1;
        var rowData = [];
        for (var param in e.parameter) {
          Logger.log('In for loop, param='+param);
          var value = stripQuotes(e.parameter[param]);
          //Logger.log(param + ':' + e.parameter[param]);
          switch (param) {
            case 'col1': 
              rowData[0] = value;
              break;
            case 'col2':
              rowData[1] = value;
              break;
            default:
              result = "unsupported parameter";
          }
        }
        Logger.log(JSON.stringify(rowData));
    
        // Write new row to spreadsheet
        var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
        newRange.setValues([rowData]);
      }
    
      // Return result of operation
      return ContentService.createTextOutput(result);
    }
    
    /**
     * Remove leading and trailing single or double quotes
     */
    function stripQuotes( value ) {
      return value.replace(/^["']|['"]$/g, "");
    }
    

    你应该仔细阅读谷歌的内容服务文档,特别是关于重定向的注意事项和敏感信息。

    找到这篇文章我非常兴奋!我使用我的Google Sheets电子表格id将您的Code.gs副本部署为web应用程序。当我访问它时,每次都会得到错误的值,即使我以与您的示例链接相同的方式访问它。即使我弄坏了工作表id,该错误消息也不会更改,因此似乎与此无关。有什么建议吗?@jerrygarciuh:我不清楚你所说的“坏价值”是什么意思,也许你可以详细解释一下,或者最好把它作为另一个问题发布。您是否执行了常见的web服务步骤,即首先从编辑器运行脚本以确保其已授权,然后保存版本并发布它?谢谢您的回复@Mogsdad!这是一条极其模糊的错误消息,我从未整理过它,但我放弃了这种方法,而是选择了一个来自“感谢帖子和回复”的助手库!
    https://script.google.com/macros/s/AKfycbzVDFmOeaQc4mDZhWCnwf0CUnX64YNhhnKIlTYhqtpBraINUf9e/exec?col1='Value for column 1'&col2='Another value'
    
    function doGet(e) {  
      Logger.log( JSON.stringify(e) );  // view parameters
    
      var result = 'Ok'; // assume success
    
      if (e.parameter == undefined) {
        result = 'No Parameters';
      }
      else {
        var id = '--spreadsheet-id--'; // Spreadsheet id
        var sheet = SpreadsheetApp.openById(id).getActiveSheet();
        var newRow = sheet.getLastRow() + 1;
        var rowData = [];
        for (var param in e.parameter) {
          Logger.log('In for loop, param='+param);
          var value = stripQuotes(e.parameter[param]);
          //Logger.log(param + ':' + e.parameter[param]);
          switch (param) {
            case 'col1': 
              rowData[0] = value;
              break;
            case 'col2':
              rowData[1] = value;
              break;
            default:
              result = "unsupported parameter";
          }
        }
        Logger.log(JSON.stringify(rowData));
    
        // Write new row to spreadsheet
        var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
        newRange.setValues([rowData]);
      }
    
      // Return result of operation
      return ContentService.createTextOutput(result);
    }
    
    /**
     * Remove leading and trailing single or double quotes
     */
    function stripQuotes( value ) {
      return value.replace(/^["']|['"]$/g, "");
    }