Tag: 谷歌 应用程序 脚本

在Google Apps脚本中超出了最长执行时间

我有一个Apps脚本,不断得到这个错误。 通过通知邮件来判断,看起来时间限制是5分钟。 有谁知道是否有办法延长这个时间限制? 或者也许有办法再次调用Apps脚本,并从停止的地方回来? 任何帮助表示赞赏。

如果谷歌应用程序脚本存储在像GitHub版本控制

我对pipe理Google App脚本共享开发的最佳方式感到困惑。 问题是,编辑谷歌应用程序脚本是通过一个在线编辑器完成自己的版本控制,但是这不是与其他开发人员共享,据我所知。 那么build议的做法是,我们从该编辑空间复制并粘贴到本地硬文件中,然后推入我们select的版本控制系统,然后当我们想要testing东西时,我们将其复制并粘贴回到在线编辑器中? 似乎凌乱和容易出错。 我看到一些人正在把他们的Google App脚本放在Github这样的地方: https://github.com/peterneubauer/neo4j-google-apps-script 我们可以直接从git推送到Google App脚本上,就像我们用Heroku一样。 真的想能够运行我的应用程序脚本的unit testing电池…

在Google Apps脚本中打印到控制台?

我对编程非常陌生(已经学习了一些关于Codecademy的JS课程)。 我试图创build一个简单的脚本来确定,如果从扑克游戏结果给出一个电子表格,谁应该支付给谁。 我打开了Google Apps脚本,编写了以下内容开始: function addplayerstoArray(numplayers) { var playerArray = []; for (i=0; i<numplayers; i++) { playerArray.push(i); } } addplayerstoArray(7); console.log(playerArray[3]) 这个想法是创build一个数组,其中包含玩家总数。 运行代码时,我认为会打印“3”到控制台。 但没有发生。 它说:“ReferenceError:”控制台“没有定义。” A)我不明白Google Apps脚本控制台如何在打印方面的工作,以便我可以看到我的代码是否正在完成我想要的function? B)这是代码问题吗? 提前致谢。

使用Google App脚本将多个file upload到Google云端硬盘

我试图一次上传多个文件与我的应用程序。 它识别何时有2个或更多文件被选中。 但是,它只会将选中的第一个file upload到我的驱动器。 另外(虽然很小),我想知道如何改变我的textarea字体为Times New Roman,以保持字体的其余部分一致。 Code.gs function doGet() { return HtmlService.createHtmlOutputFromFile('form') .setSandboxMode(HtmlService.SandboxMode.IFRAME); } function uploadFiles(form) { try { var foldertitle = form.zone + ' | Building: ' + form.building + ' | ' + form.propertyAddress + ' | ' + form.attachType; var folder, folders = DriveApp.getFolderById("0B7UEz7SKB72HfmNmNnlSM2NDTVVUSlloa1hZeVI0VEJuZUhSTmc4UXYwZjV1eWM5YXJPaGs"); var createfolder = folders.createFolder(foldertitle); folder = createfolder; […]

Google Apps脚本打开一个URL

有没有办法写一个谷歌应用程序脚本,所以当运行,第二个浏览器窗口打开www.google.com(或我select的另一个网站)? 我正在尝试针对上一个问题提出一个解决方法: 可以在Google Apps电子表格的消息框中添加超链接

Google应用程序脚本超时〜5分钟?

我的谷歌应用程序脚本迭代通过用户的谷歌驱动器文件和复制,有时移动文件到其他文件夹。 5分钟后脚本始终停止,日志中没有错误消息。 我在一次运行中sorting了数十甚至数千个文件。 有没有任何设置或解决方法?

当我在GAS中“睡眠”时会发生什么? (执行时间限制解决方法)

在这个背后(不是我承认…)有趣的问题是一个真正的问题关于我使用的解决方法,而不真正理解它是如何工作的。 首先简要介绍一下我的用例,所有这一切都发生在一个绑定UiApp的文档中, 我必须创build并通过电子邮件发送几百个文件在GAS编写的邮件合并应用程序。 如果没有达到5分钟的执行时间限制,在一个批处理过程中需要很长的时间,所以我尝试了几个不同的解决方法来完成任务: 使用时间戳(存储在ScriptProperties中)当我开始进程,当我达到预定义的值接近极限时,我存储当前值(指针,有用的variables…),并返回到用户界面,要求用户继续或不)。 这工作相当好,但需要人为的行动来完成整个任务。 因此,我使用在第一个处理程序调用中创build的定时器触发器来设置解决scheme,并且此触发器调用文档创build/发送function。 这也很好地工作,但称为函数的触发器不能够与UI进行交互,因为似乎只有处理函数可以更新UI。 问题是我不能显示进程,也不能在进程结束时显示。 然后,我想起了一个小应用程序,前段时间为了好玩而写了一个小程序:它是一个使用CheckBox作为服务器处理程序触发器的计时器(从旧的Google论坛上的Romain Vialard提出的想法),并决定尝试诡计在我的邮件发送过程中。 它完美的工作,我处理40个文件批次是每个电话(约3分钟),然后暂停一会儿,再次开始,直到它完成。 每个调用都由checkBox链接的服务器处理程序触发,checkbox本身在处理函数中被更改,以这种方式创build自己的触发器。 我的问题(最后;-)是:知道整个过程可能需要30到60分钟,究竟有多精确? 如何/为什么这些服务器处理程序函数被视为多个进程,因为它们是从函数本身内部创build的? 我希望我很清楚,(我怀疑,因为它在我心中有点混乱:-) 我在下面的时钟testing应用程序的代码给了我这个想法,它可能会让事情变得更容易理解。 function doGet() { var app = UiApp.createApplication().setTitle('Counter/Timer'); var Panel = app.createAbsolutePanel().setStyleAttribute('padding','35'); var counter = app.createHTML().setId('counter').setHTML('<B>Timer = wait</B>').setStyleAttribute('fontSize','40px');// set start display var clo = app.createTextBox().setName('clo').setId('clo').setValue('0').setVisible(false);//set start value in seconds var handler1 = app.createServerHandler('doSomething').addCallbackElement(Panel); var chk1 = app.createCheckBox('test1').addValueChangeHandler(handler1).setVisible(true).setId('chk1').setVisible(false); app.add(Panel.add(chk1).add(counter).add(clo)); chk1.setValue(true,true);// […]

如何在Google-apps-script中使用单个页面模板生成多页文本文档?

我必须从存储在电子表格中的用户数据列表中生成标签。 现在我得到一切正常工作,除了当我输出超过16个项目(每页标签的数量),我有不止一个文件,每个文件是一个单一的页面。 每个文档都有一个独特的名字,所以它不是很难使用,但打开这么多的文档来打印它们是无聊的。 由于我不想创build500个项目(或任何数量)的模板,我想知道如果我可以在一个多页文档中重复这个单页面模板到任何扩展,所以我在一个单一的文档中获得所有的标签。 这将是打印更舒适;-)我找不到任何线索到现在…任何好主意? 这里是我用来生成文档的代码(有点长,抱歉): 和…非常感谢您的帮助。 function print(e){ var app = UiApp.getActiveApplication(); var selrangerow = sh.getActiveSelection().getRowIndex(); var selrangeheight = sh.getActiveSelection().getNumRows(); var selrangeend = selrangerow+selrangeheight-1 var selrange = sh.getRange(selrangerow,1,selrangeheight,7).getValues(); var feuilles = Math.ceil(selrangeheight/16); for (ff=1;ff<=feuilles*16;++ff){ if(ff>selrange.length){selrange.push([" "," "," "," "," "," "," "])} ;// remplit selrange jusqu'à multiple de 16 (nbre de feuille) } //Logger.log(selrange) […]

链接到Google Apps脚本中的另一个HTML页面

从ScriptDbConsole.html链接到legend.html时,我得到以下错误信息: 对不起,您请求的文件不存在。 请检查地址,然后重试。 这通常会在正常的环境中工作,但不是我想的。 这是在script.google.com。 在script.google.com项目中创build一个新的.html文件时,它会在其他位置创build相同的位置,所以这段代码实际上应该是正确的? 如何从ScriptDbConsole.html打开legend.html? <a href='legend.html' target='_blank'>Open in new window</a>