我觉得这里总有一个noob的帖子.我非常了解CSS,HTML和XML,但总是避免使用JS.我知道很少的javascript,最近开始了一个Lynda.com课程赶上来.对不起我的无知.因此,我真的很难学习Google Apps脚本.显然,我需要学习JS才能理解它.
我为之工作的学校(5000名学生)设立了在线课程.我以数以千计的谷歌文档工作表的形式创建了课程.这些工作表链接在各种网站上.
我们面临的问题是,当学生打开文档时,他们必须先复制它们才能编辑它们(我当然不希望它们能够编辑原文).这对于在平板电脑上使用移动浏览器的学生来说非常糟糕,因为在Google Docs中制作副本在移动设备上使用桌面用户界面时效果不佳.
我知道这种事情可以通过脚本自动化.我看过这里,低调看,它有效!我快乐地惹恼我的裤子,因为我已经三年来一直在寻找这样的功能.(是的,我知道这很难过).
那么,是什么我问的是,会有人愿意帮助一个noob弄清楚如何去适应这个代码,以便学生点击一个网站的课的按钮,它会自动在新标签页中打开工作表的副本?
/**
* Copy an existing file.
*
* @param {String} originFileId ID of the origin file to copy.
* @param {String} copyTitle Title of the copy.
*/
function copyFile(originFileId, copyTitle) {
var body = {'title': copyTitle};
var request = gapi.client.drive.files.copy({
'fileId': originFileId,
'resource': body
});
request.execute(function(resp) {
console.log('Copy ID: ' + resp.id);
});
}
Run Code Online (Sandbox Code Playgroud)
昨天花了一整天学习Javascript,我还有很长的路要走.不知道我能花多长时间自己解决这个问题.
google-docs google-docs-api google-apps-script google-drive-api
我想使用Google Apps脚本为电子表格制作自定义功能.我做了一个非常简单的功能:
function foo(){
return "bar";
};
Run Code Online (Sandbox Code Playgroud)
问题是我需要在几百个单元格中使用此功能.当我将函数粘贴=foo()到所有这些单元格中时,该函数可以在一些单元格中运行,但在大多数情况下,我会收到此错误:"服务调用次数太多:电子表格.请Utilities.sleep(1000)在调用之间尝试."
我想我不明白为什么这个函数很简单,被认为是对电子表格服务的调用.我甚至没有请求任何数据(除了函数本身).那是问题吗?如果是这样,有解决方法吗?自定义函数可以使Google Spreadsheets无限强大,但是这个问题限制了在多个单元格中使用自定义函数的可能性.建议?
(PS - Utilities.sleep()当所有单元同时调用它们的功能时,使用错误消息建议的功能根本没有帮助;它只会降低单个单元重复调用该功能的速率.)
从谷歌电子表格运行谷歌应用程序脚本时,如果其中一个谷歌API使用不正确,电子表格顶部会显示一个红色的"butterbar"错误.此消息通常包含对脚本开发人员有用的信息(来自google api的错误消息,例如"范围的坐标或维度无效.")但不一定是电子表格用户(他们的真实世界翻译)可以做到解决它).
我搜索了UiApp api文档,但没有看到自定义此消息的方法.是否可以抛出您自己的错误消息?
文档和工作表附加组件的文档限制是,Apps脚本无法分辨用户在加载项之外做了什么.这个诱人的提示给出了:
可以从侧边栏的客户端代码轮询文件内容的更改,尽管您总是会有轻微的延迟.该技术还可以提醒您的脚本更改用户所选单元格(在表格中)和光标或选择(在文档中).
遗憾的是,这并未在任何演示代码中显示.我该怎么做?
javascript jquery google-docs google-sheets google-apps-script
我试图产生一个"反向枢轴"功能.我已经长时间努力寻找这样的功能,但找不到已经存在的功能.
我有一个摘要表,其中包含最多20列和数百行,但我想将其转换为平面列表,以便我可以导入到数据库(甚至使用平面数据来创建更多数据透视表!)
所以,我有这种格式的数据:
| Customer 1 | Customer 2 | Customer 3
----------+------------+------------+-----------
Product 1 | 1 | 2 | 3
Product 2 | 4 | 5 | 6
Product 3 | 7 | 8 | 9
Run Code Online (Sandbox Code Playgroud)
并需要将其转换为以下格式:
Customer | Product | Qty
-----------+-----------+----
Customer 1 | Product 1 | 1
Customer 1 | Product 2 | 4
Customer 1 | Product 3 | 7
Customer 2 | Product 1 | 2
Customer 2 | Product 2 | 5
Customer …Run Code Online (Sandbox Code Playgroud) 我正在使用Google App Script.我在尝试着:
在我看来,下面的代码应该可行,但事实并非如此.它确实完成了任务1和3 - 也就是说,它会复制并将副本保存到我想要的文件夹中.但是,它不会使用我指定的文件名保存文件.相反,它将其保存为"[原始电子表格文件名]的副本".要做到这一点,我正在使用File#makeCopy
(注意:我知道此问题之前已经得到解答,但我相信自谷歌日落以来,DocList服务尚未得到解答.)
当我制作这个简化的MCVE时,我发现它按预期工作:
function saveAsSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxx");
DriveApp.getFileById(sheet.getId()).makeCopy("desired file name", destFolder);
} //END function saveAsSpreadsheet
Run Code Online (Sandbox Code Playgroud)
但是,我的原始代码没有 - 副本的名称是错误的:
function saveAsSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var buildingNameAddress = sheet.getRangeByName('buildingNameAddress').getValue();
Logger.log(buildingNameAddress); //Logs correct string
var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxx");
DriveApp.getFileById(sheet.getId()).makeCopy(buildingNameAddress, destFolder);
}
Run Code Online (Sandbox Code Playgroud) 我想只在单元格为空时才在单元格中输入变量.但是,if语句不起作用.有什么建议?
var ss=SpreadsheetApp.getActiveSpreadsheet();
var r=ss.getRange("'odpov?di'!A2:J");
var rws=r.getNumRows();
ax=r.getCell(rws-1, 10).getValue();
if (ax == "") {
ax = "foo";
r.getCell(rws-1, 9).setValue(ax);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将大量用 Markdown 编写的文档迁移到 Google Doc 中,以便我们的营销部门可以使用它。
是否有使用 appscript/Google Docs Api 的机制可以导入文件并使用预定义模板将其转换为 Google Doc?例如 H1s 将映射到 Title 等
一段时间以来,我无法从我的 Google 帐户在 Google Apps 脚本中为我正在使用的文件之外的范围提供任何新的 OAuth 授权(.currentonly有效,其他一切都无效)。
它要求提供我想要使用的 Google 帐户,并在选择它显示的帐户后:
此应用已被阻止
此应用试图访问您 Google 帐户中的敏感信息。为确保您的帐户安全,Google 阻止了此访问。
看截图:

甚至没有显示具有请求权限概述的屏幕。对于我尝试添加权限的每个新的或旧的电子表格文件,都会发生这种情况。但是在停止工作之前已经获得 OA 的电子表格会定期更新项目触发器。
这是我的清单文件:
{
"timeZone": "Europe/Paris",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets.currentonly", // this works
"https://www.googleapis.com/auth/drive", // this doesn't work
"https://www.googleapis.com/auth/spreadsheets" // this also doesn't work
],
"runtimeVersion": "V8"
}
Run Code Online (Sandbox Code Playgroud)
当我尝试从不同的 Google 帐户执行相同操作时,一切正常。因此,我认为这与整个 Google 帐户设置有关。
我尝试启用,Less secure app access但没有帮助。
是否有可能在该帐户中禁用了来自未经验证的 3rd 方应用程序的访问?我怎样才能再次启用它?
google-docs ×3
cell ×1
google-oauth ×1
javascript ×1
jquery ×1
oauth ×1
pivot-table ×1
spreadsheet ×1
unpivot ×1