6

是否有关于如何执行此操作的脚本或教程?如何实现将 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 吗?

4

1 回答 1

14

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

你当然可以。您可以使用 Google Apps 脚本创建一个可以接收和处理服务请求的网络服务。将参数传递给 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. 打开 Google 电子表格,确保电子表格可完全访问(公开)
  2. 工具 --> 脚本编辑器
  3. 复制下面的代码并粘贴到编辑器中
  4. 替换为--spreadsheet-id--您的工作表的 ID(很容易找到这个)
  5. 文件 --> 保存
  6. 发布 --> 部署为 web-app --> 版本 = NEW ; 根据需要设置访问权限
  7. 授权(将提示您输入凭据)-> 部署
  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, "");
}

您应该阅读 Google 的内容服务文档,尤其是有关重定向和敏感信息的注意事项。

于 2013-07-26T01:17:53.233 回答