首页 文章

通过cURL / PHP在Google电子表格中插入新行 - 如何?

提问于
浏览
5

是否有关于如何执行此操作的脚本或教程?如何实现从我的PHP应用程序插入数据到Google电子表格?

我查看了API(https://developers.google.com/google-apps/spreadsheets/)并且没有PHP代码/示例 .

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

我不认为我可以使用Google Apps脚本(https://developers.google.com/apps-script/reference/spreadsheet/),因为我看不到如何从PHP脚本编码和触发 .

还要别的吗?

我们可以轻松使用并利用这个API吗?

1 回答

  • 8

    我认为我不能使用Google Apps脚本,因为我看不到如何从PHP脚本编码和触发

    你当然可以 . 您可以使用Google Apps脚本创建可以接收和处理服务请求的Web服务 . 将参数传递给Web服务很简单,例如,可以使用cURL来完成 .

    以下示例适用于包含两列的简单电子表格 . 您可以按以下方式添加更多行:

    curl -L <SCRIPT URL>?col1='Value for column 1'&col2='Another value'
    

    或浏览器网址:

    https://<SCRIPT URL>?col1='Value for column 1'&col2='Another value'
    

    此示例电子表格已发布here,以下是可用于添加行的示例URL:

    https://script.google.com/macros/s/AKfycbzVDFmOeaQc4mDZhWCnwf0CUnX64YNhhnKIlTYhqtpBraINUf9e/exec?col1='Value for column 1'&col2='Another value'
    

    说明

    这是一步一步的 .

    • 打开Google电子表格,确保电子表格完全可访问(公开)

    • 工具 - >脚本编辑器

    • 复制下面的代码并粘贴到编辑器中

    • 用你的工作表的id替换 --spreadsheet-id-- (很容易找到这个)

    • 文件 - >保存

    • 发布 - >部署为web-app - > Version = NEW;根据需要设置访问权限

    • 授权(将提示您输入信用证) - >部署

    • 您现在将获得脚本的URL

    • ?col1='Colum1Data'&col2='Colum2Data' 附加到网址或根据需要进行修改,以便从网址将数据推送到电子表格

    • 完成

    (感谢vr00n . )

    Code.gs

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

    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的内容服务文档,尤其是有关重定向和敏感信息的注意事项 .

相关问题