标签: google-apps-script

用于自动制作Google文档副本以进行编辑的脚本

我觉得这里总有一个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

14
推荐指数
3
解决办法
2万
查看次数

服务次数过多(Google Apps脚本)

我想使用Google Apps脚本为电子表格制作自定义功能.我做了一个非常简单的功能:

function foo(){
    return "bar";
};
Run Code Online (Sandbox Code Playgroud)

问题是我需要在几百个单元格中使用此功能.当我将函数粘贴=foo()到所有这些单元格中时,该函数可以在一些单元格中运行,但在大多数情况下,我会收到此错误:"服务调用次数太多:电子表格.请Utilities.sleep(1000)在调用之间尝试."

[此处截图]

我想我不明白为什么这个函数很简单,被认为是对电子表格服务的调用.我甚至没有请求任何数据(除了函数本身).那是问题吗?如果是这样,有解决方法吗?自定义函数可以使Google Spreadsheets无限强大,但是这个问题限制了在多个单元格中使用自定义函数的可能性.建议?

(PS - Utilities.sleep()当所有单元同时调用它们的功能时,使用错误消息建议的功能根本没有帮助;它只会降低单个单元重复调用该功能的速率.)

google-sheets google-apps-script custom-function

14
推荐指数
2
解决办法
1万
查看次数

如何从谷歌应用程序脚本传回自定义错误消息?

从谷歌电子表格运行谷歌应用程序脚本时,如果其中一个谷歌API使用不正确,电子表格顶部会显示一个红色的"butterbar"错误.此消息通常包含对脚本开发人员有用的信息(来自google api的错误消息,例如"范围的坐标或维度无效.")但不一定是电子表格用户(他们的真实世界翻译)可以做到解决它).

我搜索了UiApp api文档,但没有看到自定义此消息的方法.是否可以抛出您自己的错误消息?

google-sheets google-apps-script

14
推荐指数
1
解决办法
2万
查看次数

如何从加载项中轮询Google文档

文档和工作表附加组件的文档限制是,Apps脚本无法分辨用户在加载项之外做了什么.这个诱人的提示给出了:

可以从侧边栏的客户端代码轮询文件内容的更改,尽管您总是会有轻微的延迟.该技术还可以提醒您的脚本更改用户所选单元格(在表格中)和光标或选择(在文档中).

遗憾的是,这并未在任何演示代码中显示.我该怎么做?

javascript jquery google-docs google-sheets google-apps-script

14
推荐指数
1
解决办法
5708
查看次数

如何在Google表格中创建"反向支点"?

我试图产生一个"反向枢轴"功能.我已经长时间努力寻找这样的功能,但找不到已经存在的功能.

我有一个摘要表,其中包含最多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)

pivot-table unpivot google-sheets google-apps-script

14
推荐指数
5
解决办法
9733
查看次数

如何制作电子表格副本并将其保存到特定文件夹?

我正在使用Google App Script.我在尝试着:

  1. 制作电子表格的副本
  2. 为副本提供特定的文件名,和
  3. 将其保存到特定文件夹.

在我看来,下面的代码应该可行,但事实并非如此.它确实完成了任务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)

google-sheets google-apps-script google-drive-api

14
推荐指数
2
解决办法
2万
查看次数

发布 Google 文档插件:项目密钥与当前项目不相关

我正在尝试按照以下说明发布一个简单的 Google 文档插件:发布插件

但是,当完成 Google Apps Marketplace SDK 的配置时,我输入脚本项目密钥(从文件 --> 项目属性中找到)并收到以下错误:“项目密钥与当前项目不相关。”

唯一我能找到有同样问题的人的例子(这里他们在 Google 开发者控制台上创建项目而不是通过资源 --> 高级 Google 服务时,这不是我的错误的原因,任何人都可以解释我的问题吗?

任何帮助将不胜感激,康纳

google-apps-script

14
推荐指数
2
解决办法
3547
查看次数

Google Spreadheets Scripts:检查单元格是否为空

我想只在单元格为空时才在单元格中输入变量.但是,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)

spreadsheet cell google-sheets google-apps-script

14
推荐指数
3
解决办法
5万
查看次数

使用 Appscript 将 Markdown 文本文件转换为 Google 文档?

我正在尝试将大量用 Markdown 编写的文档迁移到 Google Doc 中,以便我们的营销部门可以使用它。

是否有使用 appscript/Google Docs Api 的机制可以导入文件并使用预定义模板将其转换为 Google Doc?例如 H1s 将映射到 Title 等

google-docs google-docs-api google-apps-script

14
推荐指数
4
解决办法
1万
查看次数

无法在任何文件上授权任何外部 Google Apps 脚本范围

一段时间以来,我无法从我的 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 方应用程序的访问?我怎样才能再次启用它?

oauth google-sheets google-apps-script google-oauth

14
推荐指数
0
解决办法
6545
查看次数