我使用Googles Sheet API for php从工作表中检索值。我的代码似乎适用于所有工作表名称,除了那些包含单引号的工作表名称。我尝试使用\'来逃避单引号但它似乎无法按预期从工作表中提取数据。
我的代码如下所示。
$sheetId = "1Oz0c3OZN9parxwXU3l9pwWC1wwvmODHQiUz9is50Dy0";
$sheetName = "knijbnjk''''''''''jguvhygvhy";
$escapedSheetName = str_replace("'", "\'", $sheetName);
$range = "'{$escapedSheetName}'!A1:B4";
// returns instance of Google_Service_Sheets with client setup
$service = $this->getSheetService();
$result = $service->spreadsheets_values->get($sheetId, $range);
var_dump($result);
我尝试过使用其他一些变体,例如/'并取代'与&引用;我尝试将单引号转换为双引号但到目前为止似乎没有任何效果。似乎无法找到解决这个问题的方法。
答案 0 :(得分:0)
尝试执行SpreadSheets.get这应该返回Spreadsheet resource。
"sheets": [
{
object(Sheet)
}
这应返回电子表格中所有Sheet的列表。
"properties": {
object(SheetProperties)
},
每张表格中的属性应包含有关该表格的信息。
{
"sheetId": number,
"title": string,
"index": number,
"sheetType": enum(SheetType),
"gridProperties": {
object(GridProperties)
},
"hidden": boolean,
"tabColor": {
object(Color)
},
"rightToLeft": boolean,
}
我的赌注是它的html编码' - > %27
答案 1 :(得分:0)
所以事实证明你必须用另一个单引号来逃避单一引用。
所以解决方案是
class RouterStub {
navigateByUrl(url: String) { return url; }
}
class GlobalDataServiceStub {
shareObj: any = {};
}
describe('LoginComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [LoginComponent],
providers: [
{ provide: GlobalDataService, useClass: GlobalDataServiceStub },
{ provide: Router, useClass: RouterStub }
]
});
fixture = TestBed.createComponent(LoginComponent);
comp = fixture.componentInstance;
});
it('should set role to admin',
inject([GlobalDataService], (gd: GlobalDataService) => {
comp.login();
expect(gd.shareObj['role']).toBe('admin');
})
);
});
太奇怪了。