我使用 Google Apps Script 在 Google 电子表格中自定义了一个菜单。
我遇到的问题是,当我按下脚本管理器时,我使用的所有辅助函数都会列出。
我想隐藏它们,我读过如果我在函数名称的末尾加上下划线,但它不起作用。
从文档中他们说最后的下划线使得该函数只能从另一个函数而不是编辑器中调用,但是正如您在图像中看到的,它对我不起作用:

我正在使用dotNetOpenAuth通过用户的Google Apps帐户向我的应用提供SSO.除了简单的身份验证,我还要求Google返回用户的电子邮件,名字和姓氏.当用户第一次进入时,他们会被重定向到典型的Google帐户页面,告诉他们该应用程序正在询问此信息,并且他们是否希望允许该信息.那里有复选框以记住此批准.问题是,批准不被记住.如果他们在不关闭浏览器的情况下返回网站,它会记住它们.但是如果他们关闭浏览器然后再打开它并重新进入,他们会再次被提示允许它.
如果我查看显示已关联网站,应用和服务的Google帐户页面,我会多次看到我的应用列表.它就像它不认识它是相同的应用程序并继续添加它.
我知道我必须遗漏一些明显的东西,但我不确定它是什么.有任何想法吗?
谢谢!
你可以在这里找到我的代码
使用user.profile和user.email作用域以及/ oauth2/v2/userinfo feed似乎不会返回任何自定义字段(在我的案例中为Department)或电话号码.这些字段显示在"域共享联系人"目录中.
是否有类似于Apps域特定的供稿网址//oauth2/{DOMAIN}/v2/userinfo?
API /服务不支持任何自定义字段吗?
有没有办法将其捏造成工作?
对您自己的应用程序域共享联系人配置文件的读访问权限应该不会那么困难.
我更喜欢非管理员解决方案,因为我的域使用具有SAML身份验证的公共访问卡,所以我不能只在App Engine应用程序中存储管理员凭据(用户:密码)并访问/ m8/feed.如果有一个流程来访问具有预先授权的消费者密钥和秘密的域共享联系人(带有自定义字段),我会对使其工作的说明感兴趣.
编辑 Jay Lee钉了它" https://www.google.com/m8/feeds/gal/ {domain}/full"
以下是使用Google Apps脚本的概念验证脚本(我完成后会添加最终的OAuth2版本)
function getGal(email, passwd, domain) {
var res = UrlFetchApp.fetch("https://www.google.com/accounts/ClientLogin", {
contentType: "application/x-www-form-urlencoded",
method: "post",
payload: { "Email": email, "Passwd": passwd, "accountType": "HOSTED", "service":"cp" }
});
var auth = res.getContentText().match(/Auth=(.*)/i)[1];
Logger.log("Auth: " + auth);
res = UrlFetchApp.fetch("https://www.google.com/m8/feeds/gal/" + domain + "/full", {
method: "get",
headers: { "Authorization": "GoogleLogin auth=" + auth, "GData-Version": "1.0" }
});
Logger.log(res.getHeaders());
Logger.log(res.getContentText());
}
Run Code Online (Sandbox Code Playgroud)
编辑2返回JSON的OAuth版本,仅返回访问脚本的用户的信息.
function googleOAuthM8() { …Run Code Online (Sandbox Code Playgroud) 我已经尝试使用 APIs explorer 和我自己的 python 代码,但似乎取消删除在 API 中不起作用。我在 Google Apps 管理控制台的“最近删除”用户列表中有一个帐户,但无论我在 API 资源管理器中做什么,它都不起作用。这是一个示例屏幕截图:


我相信它可能与 orgUnitPath 有关,但我不确定。我已经用'/'、'/myorg' 和'myorg' 试过了,但它们都不起作用。不太确定此时还可以尝试什么。
python google-apps google-api-python-client google-admin-sdk
这是我第一次使用"回答你自己的问题"功能.我希望我做得对.我的标题引发了警告,我的问题看起来很主观,可能会被删除.
我搜索了网站,没有发现任何与我在下面的回复中提到的详细程度相匹配的问题,所以我只想通过发布这个来帮助一些程序员.
作为谷歌Apps域的管理员,你如何使用谷歌电子邮件设置API与OAuth的2以编程方式设置用户的电子邮件签名在谷歌Apps脚本域?
google-apps google-apps-script google-email-settings-api google-oauth
我正在尝试使用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 脚本项目。Apps 脚本通过嵌入的小部件部署在 Google 站点 (sites.google.com) 上的各种页面上。每当我们需要处理其中之一时,我们都能够通过以下方式找到该项目:
这是一个相当乏味的过程,但到目前为止它已经奏效了。
当通过sites.google.com 访问时,其中一个小工具开始显示“需要授权...”消息,因此我们需要追踪它所属的项目。我们完成了步骤 1-3(上面),但是我们找不到任何具有与小工具匹配的 URL 的项目。
我的预感是组织内部的其他人(不是开发人员的帐户)拥有该项目,但可能是 5 或 6 个不同的人,他们都不是开发人员或特别具有技术头脑。另一种可能是开发者账户确实拥有该项目,但它的名字很糟糕,我并不兴奋,要经过 5-7 几十次步骤才能找到它。
有没有办法根据 URL 定位特定项目?script.google.com 上的搜索工具似乎只搜索项目名称,不幸的是,这在这种情况下没有帮助。
我在 Google Apps Script 中遇到了一个奇怪的问题,正在处理幻灯片插件。
当我在只有一个用户登录(称为用户 B)的隐身窗口中运行加载项时,一切正常。
当我在多个用户登录的情况下运行加载项(在同一个 Chrome 选项卡中将其称为用户 A 和 B)时,Apps 脚本似乎对授权感到困惑。当我尝试以用户 B 身份使用插件时(如右上角显示的配置文件所证明),插件的所有功能都失败了,我猜是因为它缺乏授权。请注意,加载项一直都安装在用户 B 的帐户上,并且它仍然可以在仅用户 B 登录的隐身窗口中运行。
关于这个的任何提示?在多重登录的情况下,有没有办法“强制”附加组件使用用户 B 的授权?
我有一个包含远程加载和在 Google Drive 中创建的图像的 blob:
var response = UrlFetchApp.fetch(fileURL);
var fileBlob = response.getBlob();
var folder = DriveApp.getFolderById('THjgj698979XXXXXXXX');
var result = folder.createFile(fileBlob);
Run Code Online (Sandbox Code Playgroud)
我想要的是调整此 fileBlob 中包含的图像的大小。我怎样才能做到这一点?
供您参考,一篇可以帮助但最终并没有真正帮助我的帖子:(解释了如何调整图像大小,而不是如何调整 blob 中的图像大小) 在 Google Apps 脚本中调整图像大小
谢谢
编辑 :
这就是我现在所做的。但是我遇到了一个问题:图像被缩小了,但不是我指定的尺寸......
var response = UrlFetchApp.fetch(fileURL);
var fileBlob = response.getBlob();
var folder = DriveApp.getFolderById('THjgj698979XXXXXXXX');
var docfile = Drive.Files.insert({
title: "temp",
mimeType: "application/vnd.google-apps.document",
}).getId();
var blobImage = DocumentApp.openById(docfile).insertImage(0, fileBlob);
blobImage.setWidth(10);
blobImage.setHeight(10);
var fileBlob2 = blobImage.getBlob();
fileBlob2.setName(newFilename);
var result = folder.createFile(fileBlob2);
Run Code Online (Sandbox Code Playgroud)
图像从 4000x6000 缩小到 2500x1667。不是 10x10 :(
你知道如何解决这个问题吗?
谢谢 …
google-app-engine google-apps google-docs-api google-apps-script google-sheets-api
google-apps ×10
gdata ×1
google-api ×1
google-oauth ×1
google-sites ×1
oauth-2.0 ×1
python ×1
spreadsheet ×1
url ×1