我有大约15-20个Google Apps脚本项目,它们都使用相同的全局变量列表.
我所做的是定义项目中第一个脚本文件顶部的所有全局变量,然后将代码块复制并粘贴到每个项目的同一位置.因此,如果我在其中进行更改,我会将整个内容复制并粘贴到其余内容中.这很费时间.
有一个更好的方法吗?它是否使用图书馆?有没有人使用库来跨项目定义全局变量?
我目前正在将使用已弃用的UI服务的Google Apps脚本更改为HtmlService.
我使用以下代码创建了一个模态对话框(在电子表格容器绑定脚本中):
var htmlTemplate = HtmlService.createTemplateFromFile('testDialogue');
htmlTemplate = template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
SpreadsheetApp.getUi().showModalDialog(htmlTemplate, 'Test Dialogue');
Run Code Online (Sandbox Code Playgroud)
对话框打开,但我需要修改其尺寸.
HtmlOutput对象有一个setHeight方法,但HtmlTemplate对象似乎没有相同的方法.
我尝试在对象上使用这个方法,如下所示:
var htmlTemplate = HtmlService.createTemplateFromFile('testDialogue').setHeight(300);
Run Code Online (Sandbox Code Playgroud)
但是这会产生这个错误:
TypeError:在对象HtmlTemplate中找不到函数setHeight
此外,我检查了SpreadsheetApp Ui Class和showModalDialog方法,但它们似乎都没有设置HtmlTemplate对象高度的方法.
这是我发布的上一个问题/答案的后续内容(如何使用Google电子邮件设置API和OAuth2 for Apps脚本库为Google Apps域中的用户设置电子邮件签名),但我正在创建一个新的问题,因为电子邮件设置API已被弃用,现在流程明显不同.
作为G Suite域的管理员,您如何使用Gmail API 以编程方式通过Google Apps脚本设置域中用户的电子邮件签名?
email google-apps google-apps-script gmail-api google-oauth2
这是我第一次使用"回答你自己的问题"功能.我希望我做得对.我的标题引发了警告,我的问题看起来很主观,可能会被删除.
我搜索了网站,没有发现任何与我在下面的回复中提到的详细程度相匹配的问题,所以我只想通过发布这个来帮助一些程序员.
作为谷歌Apps域的管理员,你如何使用谷歌电子邮件设置API与OAuth的2以编程方式设置用户的电子邮件签名在谷歌Apps脚本域?
google-apps google-apps-script google-email-settings-api google-oauth
我在Google Apps脚本中使用Gmail API(基本上是Javascript),我需要尽可能少地调用API,以提高效率和速度.
我正在使用Users.messages:list列出用户邮箱中的消息,响应中包含一个名为的数组messages,对于每条消息,它包含一个id和一个threadId,如下所示:
"messages": [
{
"id": "152b93b1111c33e2",
"threadId": "152b922266c33e2"
},
{
"id": "152b93338c98cb3",
"threadId": "152b922266c33e2"
} ...
Run Code Online (Sandbox Code Playgroud)
但我需要响应以包含有关每条消息的更多信息,这样我就不必单独创建Users.messages:获取每条消息的调用.
Users.messages:list页面上的API Explorer 表示您可以使用fields参数" 指定要包含在部分响应中的字段 ".
当我单击" 使用字段编辑器 "选择我需要的三个项目时,它会将以下内容填入该字段:
messages(id,internalDate,payload)
Run Code Online (Sandbox Code Playgroud)
然后当我执行命令时,它显示GET命令应该如下所示:
https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CinternalDate%2Cpayload)&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
但是,messages结果中的数组不包括internalDate或payload字段.它只包含消息id,如下所示:
"messages": [
{
"id": "152b93b1111c33e2"
},
{
"id": "152b93338c98cb3"
} ...
Run Code Online (Sandbox Code Playgroud)
它也不包括threadId了,但它继续包含threadId如果我选择它作为其中一个字段,如下所示:
messages(id,threadId)
Run Code Online (Sandbox Code Playgroud)
并且URL看起来像这样......
https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CthreadId)&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
结果看起来与上面的第一个结果完全一样,我们没有使用fields参数.
所以我知道的fields参数是真的在做事情.
考虑到这可能只是API Explorer的限制,我尝试在Google Apps脚本中进行API调用,但它仍然不包括我需要的字段.
我正在尝试使用Google Admin SDK Data Transfer API的transfers:insert方法。我正在以我的域的超级管理员帐户执行此 API 调用。我已验证为我们的域启用了API 访问,并且超级管理员管理员角色有权使用数据传输 API。
我正在此页面上的 API 资源管理器中对此进行测试。
55656082996是我从Applications:list APIs Explorer为 Google Drive 获取的 ID 字符串。
要求:
POST https://www.googleapis.com/admin/datatransfer/v1/transfers?key={YOUR_API_KEY}
{
"oldOwnerUserId": "olduser@ourdomain.com",
"newOwnerUserId": "newuser@ourdomain.com",
"applicationDataTransfers": [
{
"applicationId": "55656082996"
}
]
}
Run Code Online (Sandbox Code Playgroud)
回复:
400 OK
- SHOW HEADERS -
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid value for: Invalid oldOwnerUserId."
}
],
"code": 400,
"message": "Invalid value for: Invalid oldOwnerUserId." …Run Code Online (Sandbox Code Playgroud) google-apps ×3
gmail-api ×2
google-api ×2
api ×1
email ×1
google-oauth ×1
javascript ×1
libraries ×1