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

在Android中从Google电子表格查询数据,android,google-sheets,kotlin,Android,Google Sheets,Kotlin,我正在尝试从谷歌电子表格中查询数据,任何人都可以通过只读链接阅读 我实施了快速启动解决方案,但我需要: 仅使用URL访问数据,无需身份验证 查询A列中的项并获取B列中的值 无需更新任何数据 我尝试构建如下查询: http://spreadsheets.google.com/tq?tq=SELECT%20*%20WHERE%20A=C298732300456446&key=2aEqgR1CDJF5Luib-uTL0yKLuDjcTm0pOIZeCf9Sr0wAL0yK 但我得到的只是

我正在尝试从谷歌电子表格中查询数据,任何人都可以通过只读链接阅读

我实施了快速启动解决方案,但我需要:

  • 仅使用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


如果没有电子表格的任何验证,我可以如何获取数据?

我不确定是否可以这样做。如果可以的话,我可以建议一个替代方案。您可以尝试编写谷歌应用程序脚本,如:

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));
}
https://script.google.com/macros/s/obtained_url/exec?value=1234
如果找到键,您将得到如下字符串响应:

"value"

我希望这会有所帮助。

C298732300456446需要放在单引号内

因此,您需要将
C298732300456446
作为
%27C298732300456446%27

修改后的查询将是

http://spreadsheets.google.com/tq?tq=SELECT%20*%20其中%20A=%27C298732300456446%27&key=2eqgr1cdjf5luib-uTL0yKLuDjcTm0pOIZeCf9Sr0wAL0yK

但我无法测试-看起来您已从此电子表格中删除/删除了访问权限