在Android中查询Google电子表格中的数据

时间:2017-11-23 07:16:09

标签: android google-sheets kotlin

我正在尝试查询Google电子表格中的数据,任何人都可以使用只读链接阅读。

我实施了this快速入门解决方案,但这就是我需要的:

  • 仅使用URL访问数据,无需身份验证
  • 在A列中查询项目并在B列中获取值
  • 无需更新任何数据

我尝试构建如下的查询:

http://spreadsheets.google.com/tq?tq=SELECT%20*%20WHERE%20A=C298732300456446&key=2aEqgR1CDJF5Luib-uTL0yKLuDjcTm0pOIZeCf9Sr0wAL0yK

但我得到的只是:

/*O_o*/
google.visualization.Query.setResponse(
{
  "version": "0.6",
  "reqId": "0",
  "status": "error",
  "errors": [
    {
      "reason": "invalid_query",
      "message": "INVALID_QUERY",
      "detailed_message": "Invalid query: NO_COLUMN: C298732300456446"
    }
  ]
}

当数据实际出现在A列的工作表中且值为C298732300456446时,就会出现这种情况。

如果没有我的电子表格中的任何身份验证,我该怎么做才能获取数据?

2 个答案:

答案 0 :(得分:1)

我不确定是否可以这样做。如果没问题,我可以提出另一种解决方案。您可以尝试编写如下的Google App脚本:

function doGet(e) { return getInfo(e); }
function doPost(e) { return getInfo(e); }

function getInfo(request) {

  var someValueFromUrl = request.parameter.value;
  var requiredValue = "";

  var sheet = SpreadsheetApp.openById("spreadsheet_id");
  var data = sheet.getDataRange().getValues();

  for (var i = 0; i < data.length; i++) {
    Logger.log("Reading row num: " + i);

    if(data[i][0] == someValueFromUrl) {
      requiredValue = data[i][1];
      break;
    } 
  }

  Logger.log(requiredValue);
  return ContentService.createTextOutput(JSON.stringify(requiredValue));
}

这样,您可以将此脚本发布为Web应用程序,并使用在发布此脚本时获取的URL来调用它。

调用脚本如:

https://script.google.com/macros/s/obtained_url/exec?value=1234

如果找到密钥,您将获得字符串响应:

"value"

我希望这会有所帮助。

答案 1 :(得分:1)

C298732300456446必须放在单引号内。

因此您需要将 <div class="hAyfc"> <div class="BgcNfc">Installs</div> <span class="htlgb"> <div><span class="htlgb">5,000+</span></div> </span> </div> 括为C298732300456446

您修改后的查询为

%27C298732300456446%27

不过,我无法对此进行测试-好像您已从此电子表格中删除/删除了访问权限。