【问题标题】:Google Sheets API, Read Values by FilterGoogle Sheets API,按过滤器读取值
【发布时间】:2020-07-08 07:32:20
【问题描述】:

我正在尝试使用带有 PHP 的 Google Sheets API 来读取和写入谷歌电子表格的值。目前我可以使用append 方法在工作表中写入值。

问题是我试图只读取符合某些条件的行,例如“日期 beetween”或“用户名”。为此,我认为我必须使用此方法batchGetByDataFilter,但我不确定如何在我的 php 脚本中实现它。

这是我的代码的一部分:

    $client = GoogleSheets::getClient();
    $service = new Google_Service_Sheets($client);

    $spreadsheetId = '1nZ0ybxUucbeNPVE_opKLdSFJVHmWIo1hVcvuQA4H-aY';
    $range = 'Sheet1!A2:J';

    $response = $service->spreadsheets_values->batchGetByDataFilter($spreadsheetId);
    echo "Return Values From Spreadsheet: \n";
    var_dump($response);exit;
    
    return $response->getValues();

【问题讨论】:

    标签: php google-sheets google-sheets-api spreadsheet


    【解决方案1】:

    DataFilter 仅按 developer metadataranges 过滤,但不按值过滤。

    为此,您必须获取特定范围的值并遍历它们,只返回匹配的值。您可以从 Quickstart 复制代码,该代码从工作表返回值。更改工作表 ID 和范围以满足您的需要。此外,一旦它找到数据,您应该使用if condition

    ...
    
    if (empty($values)) {
        print "No data found.\n";
    } else {
        print "Data found.\n";
        foreach ($values as $row) {
    
            // Print column A if there is a match
            if ($row[0] == "some username"){
                printf("%s, %s\n", $row[0], $row[4]);
            }
        }
    }
    

    【讨论】:

    • 谢谢伙计,在搜索一些信息或示例后,我做到了。 :)
    • 很遗憾谷歌没有提供用于获取数据的过滤选项。如果电子表格很大并且我们真的不知道数据(存储行或列)在哪里,我们需要获取所有值并遍历它们,这在时间和性能方面是荒谬的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多