Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从表单ID(来自gid)而不是php中的表单ID获取google电子表格数据_Php_Excel_Google Sheets - Fatal编程技术网

如何从表单ID(来自gid)而不是php中的表单ID获取google电子表格数据

如何从表单ID(来自gid)而不是php中的表单ID获取google电子表格数据,php,excel,google-sheets,Php,Excel,Google Sheets,我有一个电子表格,它包含多张制表格式的表格 我的代码只获取第一个电子表格数据,我有一个数组,其中包含所有的表格Id 我的问题是如何获得所有的工作表数据,因为我有唯一的gid 此处,所有图纸的电子表格Id相同,但图纸Id gid不同 我搜索了很多,只从电子表格Id获取数据 我可以帮助您使用javascript—您必须自己编写任何php 如果您有工作表ID,那么很容易返回到工作表名称,然后按名称获取工作表 1--获取当前电子表格中的所有工作表。从中可以找到每张图纸的图纸名称和ID 2-使用-获取ID

我有一个电子表格,它包含多张制表格式的表格

我的代码只获取第一个电子表格数据,我有一个数组,其中包含所有的表格Id

我的问题是如何获得所有的工作表数据,因为我有唯一的gid

此处,所有图纸的电子表格Id相同,但图纸Id gid不同

我搜索了很多,只从电子表格Id获取数据


我可以帮助您使用javascript—您必须自己编写任何php

如果您有工作表ID,那么很容易返回到工作表名称,然后按名称获取工作表

1--获取当前电子表格中的所有工作表。从中可以找到每张图纸的图纸名称和ID

2-使用-获取ID-返回可与列表进行比较的工作表的ID

3-使用获取工作表名称-返回可在方法getSheetByName中使用的工作表名称

4--使您能够返回具有给定名称的特定工作表

下面的示例获取一个包含ActiveSpreadsheet的SheetId的对象。它在这些图纸中循环,捕捉相应的SheetName和SheetID。它使用嵌套循环遍历我的图纸ID列表并比较图纸ID。如果图纸ID匹配,则代码使用图纸名称按名称访问图纸。如果图纸不匹配,它将继续通过下一个循环,依此类推

我在代码中留下了一些Logger命令,以便OP可以在脚本中方便的地方测试检查细节

function so54586032() {

  // set up the spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // this is the sheet where I listed my SheetIDs
  var mainsheet = ss.getSheetByName("54586032");

  // calculate the number of IDs 
  var Avals = mainsheet.getRange("A1:A").getValues();
  var Alast = Avals.filter(String).length;
  //Logger.log("DEBUG: Number of SheetIDs in my list: " + Alast); //DEBUG

  // get the list of all sheets in this spreadsheet
  var sheets = ss.getSheets();
  //calculate the number of sheets
  var sheetslength = sheets.length
  //Logger.log("DEBUG: Number of actual sheets in this spreadsheet: " + sheetslength); //DEBUG

  // LOOP through the actual sheets
  for (var i = 0; i < sheets.length; i++) {
    //Logger.log("DEBUG: i: " + i + ", sheet name: " + sheets[i].getName() + ", sheet ID: " + sheets[i].getSheetId()); // DEBUG

    // loop through the list of sheets 
    for (var z = 0; z < Alast; z++) {
      //Logger.log("DEBUG: z: " + z + ", sheet ID: " + Avals[z][0]); //DEBUG

      // test if this shhetID equals the next number in my list
      if (sheets[i].getSheetId() == Avals[z][0]) {
        //Logger.log("DEBUG: Match: " + sheets[i].getSheetId() + " to " + Avals[z][0]); //DEBUG
        // do something
      } else {
        //Logger.log("DEBUG: No Match"); //DEBUG
      };
    }

  }

}
我的列表包含相关的表单

经过大量研究,我得到了解决方案,我想发布我的解决方案

$client=$this->getClient; $service=新的Google\u服务\u表单$client; //在示例电子表格中打印学生姓名和专业: // https://docs.google.com/spreadsheets/d/xxxxxx-yyyyyyyyyyyyyy_zzzzzzzzzzzzzzzz/edit // $spreadsheetId='xxxxxx-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy; $sheet_id=数组; //加载Google API库并设置客户端 //您需要知道$spreadsheetID可以在URL中看到 $sheetService=$service; $spreadSheet=$sheetService->spreadsheets->get$spreadsheetId; $sheets=$spreadSheet->getSheets; foreach$工作表为$key=>$sheet{ //$sheet_id[$key]['gid']=$sheet->properties->sheetId; //$sheet_id[$key]['title']=$sheet->properties->title; $range=$sheet->properties->title'!A:G'; $response=$service->spreadsheets\u values->get$spreadsheetId,$range; $values[$sheet->properties->title]=$response->getValues; } 这里我们只有电子表格Id,从中我们可以获得所有工作表的标题,从标题中我们将获得所有详细信息:


$range=$sheet->properties->title.'!A:G';///循环标题并获取整个图纸值

要通过GID获取图纸名称,您可以使用相应的图纸Api:

$spreadsheet_service=new Google_Service_Sheets($client);

$body = new Google_Service_Sheets_GetSpreadsheetByDataFilterRequest([
    'data_filters'=>[
        "gridRange"=>[
            "sheetId"=>SHEET_GID_HERE
        ]
    ]
]);

$response = $spreadsheet_service->spreadsheets->getByDataFilter(SPREADSHEET_ID_HERE,$body,['fields'=>'sheets(properties.title)']);
print_r($response->getSheets());

FWIW,我看不出php和/或Excel标记的相关性。