c#我们如何让用户从动态生成的谷歌表单中获得访问权限?
我正在动态地创建一些google工作表,给定我的一个端点上的数据数组 它成功创建,但当我打开生成的url时,我得到以下信息: 文档不是很清楚,但我希望在每次生成新工作表时向给定域(或人员集)添加权限 代码:c#我们如何让用户从动态生成的谷歌表单中获得访问权限?,c#,google-sheets,C#,Google Sheets,我正在动态地创建一些google工作表,给定我的一个端点上的数据数组 它成功创建,但当我打开生成的url时,我得到以下信息: 文档不是很清楚,但我希望在每次生成新工作表时向给定域(或人员集)添加权限 代码: private static readonly string[]Scopes={SheetsService.Scope.Drive,SheetsService.Scope.Spreadsheets}; 创建公共字符串(字符串模板名、列表值、int numberOfRows) { var-s
private static readonly string[]Scopes={SheetsService.Scope.Drive,SheetsService.Scope.Spreadsheets};
创建公共字符串(字符串模板名、列表值、int numberOfRows)
{
var-sheetId=0;
var spreadSheetId=string.Empty;
var initializer=新ServiceAccountCredential.initializer(SheetsOptionsConstants.ServiceAccountEmail)
{
范围=范围
}.from PrivateKey(表soptions constants.PrivateKey);
var凭证=新的ServiceAccountCredential(初始值设定项);
//创建GoogleSheetsAPI服务。
var service=new SheetsService(new BaseClientService.Initializer
{
HttpClientInitializer=凭证,
ApplicationName=ApplicationName
});
//创建新图纸
var sheetTitle=$“[{templateName}]{{u clock.Now:yyyyy-MM-dd-HH-MM}”;
尝试
{
var sheet=新的BatchUpdateSpreadsheetRequest
{
请求=新列表
{
新要求
{
AddSheet=新的AddSheetRequest
{
属性=新属性
{
标题=图纸标题
}
}
}
}
};
var createRequest=新电子表格
{
属性=新的电子表格属性
{
标题=图纸标题
}
};
var spreadSheetCreate=service.Spreadsheets.Create(createRequest.Execute();
spreadSheetId=spreadSheetCreate.spreadSheetId;
var请求=服务.电子表格.批处理更新(表格,电子表格ID);
var result=request.Execute();
sheetId=result.Replies.First().AddSheet.Properties.sheetId.GetValueOrDefault(0);
//在工作表中添加数据
变量范围=$“{sheetTitle}”!A1:X{numberOfRows+1}”;
var valueRange=新的valueRange
{
范围=范围,
值=值
};
var valuesRequest=service.Spreadsheets.Values.Update(valueRange,spreadSheetId,range);
valuesRequest.ValueInputOption=电子表格Resource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
valuesRequest.Execute();
_logger.LogInformation(“创建名为{sheetTitle}和{count}行的工作表”,sheetTitle,numberOfRows);
}
捕获(异常)
{
_logger.LogError(异常,“创建名为{sheetTitle}的工作表时出错”,sheetTitle);
}
返回string.Format(TemplateUrl、spreadSheetId、sheetId);
}
提前感谢您需要使用驱动器API为工作表创建权限。为此,请初始化驱动器服务并创建权限对象。然后,使用以下方法将其应用于图纸Id 您应该在代码中包含以下内容:
using Google.Apis.Drive.v3;
using Google.Apis.Drive.v3.Data; //This might be not necessary if you already use Drive.v3
所需范围:
https://www.googleapis.com/auth/drive.file
创建对象:
然后请求:
// Create Drive API service.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
service.Permissions.Create(perms, sheetId).Execute();
参考文献:
- 从驱动器Api
//(example to give writing permissions to a domain)
Permission perms = new Permission();
perms.Role = "writer";
perms.Type = "domain";
perms.Domain = "your_domain";
// Create Drive API service.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
service.Permissions.Create(perms, sheetId).Execute();