标签: google-apps-script

函数onOpen()未运行

我的功能包括为文档添加菜单和烤面包.我已经验证了触发器(onOpen)也已设置好.它仅在用户进入"工具","脚本管理器","运行"时才有效.我们有太多的用户,背景太多,以至于不知道如何做到这一点.为什么不工作?(使用Chrome)

function onOpen()
{
  var menus = [{name: "Advance in Workflow", functionName:"sendEmail"}];

     SpreadsheetApp.getActiveSpreadsheet().addMenu("Auto Advance FG Workflow", menus);

  //sheet.toast(Notify/Remind users);
   sheet.toast("While you are here we kindly ask that you do not add, modify or remove     any columns.","Welcome - " + username,8);
 }
Run Code Online (Sandbox Code Playgroud)

谢谢,

triggers google-sheets google-apps-script

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

Google应用脚本:如何删除Google云端硬盘中的文件?

如何编写删除文件的Google Apps脚本?

这找到文件:

var ExistingFiles = DocsList.find(fileName);
Run Code Online (Sandbox Code Playgroud)

DocsList.deleteFile删除文件不存在.

有没有办法将这些文件移动到另一个文件夹或垃圾箱?

我要考虑的另一种解决方法是能够覆盖具有相同名称的现有文件.

目前,当我想创建一个已在MyDrive中使用的名称的文件时,它会创建一个具有相同名称的第二个文件.我想保留1个文件(新文件保留,旧文件丢失).

file delete-file google-apps-script google-drive-api

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

onclick函数自动运行

使用谷歌应用程序脚本我无法运行传递参数的js函数.当我添加参数时,它将始终在页面加载时运行代码,而不是单击按钮时.

直接从HtmlService示例,它是正常的 - 它按下按钮时运行...

document.getElementById('button1').onclick = doSomething;
Run Code Online (Sandbox Code Playgroud)

但是当我在调用(和函数)中添加一个参数时,它会在页面加载时运行一次(而不是按下按钮时)...

document.getElementById('button1').onclick = doSomething('with_this_parameter');
Run Code Online (Sandbox Code Playgroud)

如果答案显而易见,那么对此行为的任何见解都将非常感激...对不起!

javascript web-applications google-apps-script dom-events

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

Google电子表格中带有条件格式的色标

我需要在Google电子表格中的行或列上使用色标,就像Microsoft Office Excel条件格式提供的色标一样:

Microsoft Excel中的条件格式内的色标

我找不到可以完成这项工作的Google Script Gallery脚本.手动为所有可能的值设置条件格式不是解决方案.

我的能力仅限于写一个合适的剧本.因此我想出了这个伪代码:

colorRangeFormatting(cellRange, minColorHex, maxColorHex)
{
  float cellValueMax = getHighestValue(cellRange);
  float cellValueMin = getLowestValue(cellRange);
  int cellCount = range.length;
  int colorValueMax = maxColorHex.toInt();
  int colorValueMin = minColorHex.toInt();

  int colorSize = colorValueMax - colorValueMin;
  cellValueSize = cellValueMax - celLValueMin;



  int colorIncrement = (colorSize/cellValueSize).Round();
  int[] colorGradients = colorGradients[colorSize];

  foreach(int color in colorGradients)
  {
    color = colorValueMin + colorIncrement;
    colorIncrement = colorIncrement + colorIncrement;
  }

  int i = 0;
  foreach(Cell c in cellRange)
  {
    c.setBackgroundColor(colorGradients[i].ToHex());
    i++;
  }
} …
Run Code Online (Sandbox Code Playgroud)

google-docs google-sheets google-apps-script gs-conditional-formatting

15
推荐指数
1
解决办法
3万
查看次数

在不通知用户使用Google Apps脚本的情况下共享云端硬盘文档

我正在Apps脚本中创建一个工作流程,其中Doc是从模板生成的,并与各个用户共享以供审批.脚本发送一个自定义的电子邮件,通知用户该文档需要他们的批准,但他们还会在该过程的每个阶段收到第二封电子邮件,该文件来自存储文件的驱动程序,用户说"用户与您共享了文档".有没有办法禁用这些警报?当您从云端硬盘手动共享文档时,会出现一个复选框选项,允许您选择用户是否收到通知.但是,我找不到使用Apps脚本禁用此通知的方法.

我正在doc.addEditors(users)用来分享这份文件.

非常感谢

javascript google-api google-apps google-apps-script google-drive-api

15
推荐指数
2
解决办法
5910
查看次数

普通Javascript等效于jQuery.param()

jQuery.param()接受一组键值对,并将其转换为一个字符串,您可以将其用作HTML请求中的查询字符串.例如,

a = {
      userid:1,
      gender:male
    }
Run Code Online (Sandbox Code Playgroud)

会转换成

userid=1&gender=male
Run Code Online (Sandbox Code Playgroud)

我正在尝试在Google Apps脚本中调用服务器端的外部API,这需要很长的查询字符串.我会使用jQuery param函数,但似乎没有简单的方法在Google的服务器端使用jQuery.

你能给我一些实现相同功能的简单javascript代码吗?

它的jQuery实现在这里,但我不想冒险跳过任何关键细节,只需复制它并删除处理'传统'的代码.

javascript ajax jquery params google-apps-script

15
推荐指数
1
解决办法
8490
查看次数

Google Apps脚本发布插件供内部使用

如果它仅用于我的内部使用,是否有可能在没有Google批准的情况下发布插件?

如果没有,是否有可能使一些Google Apps脚本项目全球化.因此,我不需要将相同的代码/功能复制到另一个电子表格或文档,以使我的自定义宏再次工作.

google-apps-script google-apps-script-addon

15
推荐指数
1
解决办法
8748
查看次数

如何在不使用XmlService的情况下解析Google Apps脚本中的HTML字符串?

我想使用Google Spreadsheets和Google Apps脚本创建一个刮刀.我知道这是可能的,我已经看过一些关于它的教程和线程.

主要想法是使用:

  var html = UrlFetchApp.fetch('http://en.wikipedia.org/wiki/Document_Object_Model').getContentText();
  var doc = XmlService.parse(html);
Run Code Online (Sandbox Code Playgroud)

然后开始使用这些元素.但是,方法

XmlService.parse()
Run Code Online (Sandbox Code Playgroud)

对某些页面不起作用.例如,如果我尝试:

function test(){
    var html = UrlFetchApp.fetch("https://www.nespresso.com/br/pt/product/maquina-de-cafe-espresso-pixie-clips-preto-lima-neon-c60-220v").getContentText();
    var parse = XmlService.parse(html);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error on line 225: The entity name must immediately follow the '&' in the entity reference. (line 3, file "")
Run Code Online (Sandbox Code Playgroud)

我试图用来string.replace()消除显然导致错误的字符,但它不起作用.出现所有其他错误.以下代码为例:

function test(){
    var html = UrlFetchApp.fetch("https://www.nespresso.com/br/pt/product/maquina-de-cafe-espresso-pixie-clips-preto-lima-neon-c60-220v").getContentText();
    var regExp = new RegExp("&", "gi");
    html = html.replace(regExp,"");

    var parse = XmlService.parse(html);
}
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

Error on line 358: The content of elements must …
Run Code Online (Sandbox Code Playgroud)

javascript parsing html-parsing google-sheets google-apps-script

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

Google表格 - 在单元格处于活动状态时突出显示整行

有人可以告诉我如何设计一个能够突出显示活动行的工作表脚本吗?

当该行中的一个单元格处于活动状态时,我希望整个行更改字体或背景颜色.

我不希望触发器是单元格中的任何特定值,只需单击一个单元格就可以触发单元格所属的整行的高亮显示.

谢谢!

formatting google-sheets google-apps-script

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

如何在submit事件处理程序中获取表单值?

我正在尝试开始使用一个非常简单的Google表单,其中只包含几个问题(只有2个选项和一个简短文本的多项选择).创建它之后,我打开了脚本编辑器并输入了

function onSubmit(e) {
  Logger.log("onSubmit(%s)", JSON.stringify(e));
}
Run Code Online (Sandbox Code Playgroud)

onSubmit使用"编辑"菜单中的"当前项目的触发器"将其配置为"表单提交"触发器的处理程序.

填写表单并立即提交它会导致处理程序被调用,但我只在日志中看到:

[17-04-15 18:56:23:584 CEST] onSubmit({"response":{},"source":{},"authMode":{},"triggerUid":1870249629})
Run Code Online (Sandbox Code Playgroud)

即响应字段为空.我也尝试过使用FormApp.getActiveForm().getResponses(),但它也会返回一个包含几个空对象的数组(OTOH,FormApp.getActiveForm().getTitle()会返回我给表单的标题).

我怀疑我需要给脚本一些额外的权限来访问表单数据,但是我不知道怎么做,即使这确实是问题.

有谁知道为什么我没有得到表格价值,我该怎么做才能得到它们?提前致谢!

google-apps-script google-forms

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