通过cURL/PHP-HOW在谷歌电子表格中插入新行


Insert new rows into Google Spreadsheet via cURL/PHP - HOW?

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

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

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

我不认为我可以使用谷歌应用程序脚本(https://developers.google.com/apps-script/reference/spreadsheet/)因为我不知道如何从PHP脚本中进行编码和触发。

还有别的吗?

难道没有一个可行的API可以让我们轻松使用和利用吗?

我不认为我可以使用谷歌应用程序脚本,因为我不知道如何从PHP脚本进行编码和触发

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

以下示例是一个包含两列的简单电子表格。您可以通过以下方式添加更多行:

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

或通过浏览器URL:

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

这个示例电子表格发布在这里,下面是一个可以用来添加行的示例URL:

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

说明书

这是一个循序渐进的步骤。

  1. 打开谷歌电子表格,确保电子表格完全可访问(公开)
  2. 工具-->脚本编辑器
  3. 复制下面的代码并粘贴到编辑器中
  4. --spreadsheet-id--替换为工作表的id(很容易找到)
  5. 文件-->保存
  6. 发布-->部署为web应用-->版本=NEW;根据需要设置访问权限
  7. Authorize(将提示您信用)-->DEPLOY
  8. 您现在将获得脚本的URL
  9. ?col1='Colum1Data'&col2='Colum2Data'附加到URL或根据需要进行编辑以将数据从URL推送到电子表格
  10. 已完成

(感谢vr00n。)

代码.gs

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

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, "");
}

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