如果我使用谷歌教程页面中的以下内容来加载图像,效果很好:
//第一个谷歌涂鸦!
app.add(app.createImage(“http://www.google.com/logos/googleburn.jpg"));
但如果我试图从自己的谷歌文档中获取URL,则图像无法加载:
var image;
var url;
var files = DocsList.getAllFiles();
for (var i = 0; i < files.length; i++
我正在开发一个部署为Web应用程序的GAS。
我可以共享脚本并让其他人编辑,但我找不到让他们测试web应用程序的方法
“测试web应用程序以获取最新代码”的链接仅对脚本所有者可用
我遗漏了什么吗?目前无法共享。目前无法共享。更新:
看起来这是现在可用的-通过“如果脚本与除其所有者以外的其他编辑器共享并作为web应用发布,则其他编辑器现在可以更新应用的版本并访问其开发URL(以/dev结尾)。”
。。。
旧的解决方法:
您可以将另一个脚本文件连接到主脚本文件中作为解决方法。在第二个脚本中,将主脚本
如何通过谷歌应用程序脚本获得群组的昵称
这似乎不起作用:
var groups = GroupsManager.getAllGroups();
for (var i in groups) {
var group = groups[i];
var nicknames = NicknameManager.getAllNicknames(group.getName());
编辑:我意识到我误解了你的问题,我将把它放在那里,以防万一可能会有人问你,但它并不能回答你关于团队昵称的
在这背后(我承认不多…),有趣的问题是关于我使用的变通方法的真实问题,而我并不真正了解它是如何工作的
首先简要介绍一下我的用例,所有这些都发生在侧边栏中显示的文档绑定UiApp中:
我必须在一个用GAS编写的邮件合并应用程序中创建并通过电子邮件发送几百个文档。当然,如果不达到5分钟的执行时间限制,一批处理所需的时间太长,因此我尝试了几种不同的解决方法来完成任务:
启动流程时使用时间戳(存储在ScriptProperties中),当达到接近限制的预定义值时,存储当前值(指针、有用变量…),并返回用
或者('openit from here',true,copy.getUrl());
panel.add(app.createAnchor('或从您自己的驱动器','https://drive.google.com/?authuser=0#all'));
返回应用程序添加(面板);
}
嘿。谢谢对外服务?我不太清楚那是从哪里来的。很抱歉无论如何,这很简单。我有一张床单。工作表有一个脚本(菜单和由菜单选项触发的功能)。我想共享sheet+脚本。但不是通过将一些同事的电子邮件添加到工作表的共享中。我
我正在创建一个谷歌工作表,输入新员工的名字、姓氏、头衔和部门,然后在添加新员工时向不同的人发送一封包含这些信息的电子邮件
我创建此代码是为了在编辑行(dept)中的最后一个单元格时触发电子邮件,我希望生成一封电子邮件,其中包括主题中前两个单元格(名字、姓氏)的值以及正文中所有4个单元格(第一、最后、标题、dept)的值
但有些地方不太正确,我得到了一个“未定义”的Rowdata错误。有什么建议吗
function sendNotificationNEWpersons() {
var ss =
我很欣赏其他海报曾提及这个问题。我知道如何使用Utilities.zip创建一个由许多其他文件夹和文件组成的zip文件。问题是结果文件的大小。由于生成的文件大于10MB(事实上,任何包含多个图像的zip文件都会)createFile失败(如前所述引发异常)
高级服务Drive.Files.insert似乎也受到同样的限制
真的没有办法在GoogleDrive中以编程方式创建大于10MB的文件吗?这是我正在编写的应用程序的一个真正的障碍
谢谢。以前有一种附加到文件的方法,该方法需要一个字符串作为参
我需要一个脚本,以找到我的谷歌驱动器表的格式完全相同的副本。具体来说,列中可能存在重复数据,但一个实例应为红色,另一个实例应为黑色。我想突出显示两个实例均为黑色的单元格。我有一个脚本来查找副本,但不管文本颜色如何,它都会突出显示它们。谢谢你的帮助
我用于查找重复项的脚本是:
//================================
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
每当新行添加到工作表底部时,列中的日期格式不会传播到新行。列格式不会自动应用-这与日期、货币格式、对齐方式等有关。创建提交表单时将运行的函数:
代码.gs
我认为您可以单击列标题,使整个列高亮显示,然后设置格式。所有新行的格式应与整个列的格式相同。这不是一个编程问题。这个问题更适合其他网站。不幸的是,这不是那么容易,表单提交添加的行不符合格式。也许某些脚本或特定的数组公式可以修复它。编辑:即使我手动添加一行,格式也不会传播:(每次提交表单响应时,应用程序脚本都可以运行一些代码。谢谢,我将触发器
在我的Google Apps脚本加载项Simply Send中,我尝试捕获时间戳。我得到时间戳(使用e.response.getTimestamp().toString();),但它总是为EST格式化,EST是我的时区(主脚本文件的时区)
我想要的是提交表单的人的时区,或者是安装插件的表单文档的时区
如果有人有一个很酷的技巧来获取此信息,我们将不胜感激。如果我们假设运行您的加载项的用户与他们的表单处于同一时区,那么获取用户的时区就足够了
CalendarApp有一个返回用户主日历时区的方法
te
我想计算一个人的年龄,他的生日在我的日历中作为事件系列存在。要做到这一点,我需要知道本系列中的第一个事件,这就是问题:如何从实际事件中获取系列中的第一个事件
谢谢
Ronny您需要使用参数来获取序列中第一个事件的日期(只使用日期;忽略时间)
您还可以使用获取具有给定ID的事件系列
如果给定的ID是针对单个事件的,则将返回一个,其中包含系列中的单个事件。请注意,如果事件系列属于默认日历以外的日历,则必须从该日历调用此方法;直接调用CalendarApp.getEventSeriesById(id)
已经改变了。对吗?没错!要避免重新排列列的问题,请使用字段的唯一列表并将其另存为值。若只有字段名不会改变,那个么查询就可以正常工作。我将更新我的答案,以说明如何使用列名。虽然这种方法对我来说是可行的,但它会对字段名更改、列更改和插入进行更多的开销管理。因此,尽管这是一个解决方案,但对我来说更好的方法是@Ruben提供的;首先在importrange中移动数据,在这里我可以隐藏选项卡,然后使用到目前为止我喜欢的现有SQL脚本,在同一本书中现在的本地选项卡/工作表上运行。谢谢你Max.Thanx M
我在修改脚本设置公式时遇到了一些困难,请提供帮助
我正在使用的当前脚本,它设置了一个简单的公式,从P1开始,然后p列中的每26行都可以,但是我想更改simple=AVL!公式,转换为IF公式。目前设置的公式非常简单。例如,下面是前三个公式集,脚本在P1、P27和P53中设置了它们。以此类推,每26行到第5175页
=AVL!BA3
=AVL!BA4
=AVL!BA5
Etc down to...
=AVL!BA5175
这是剧本,没关系
function setFormu
我试图通过PropertiesService传递序列化数据或数组,以便在文档中构建动态表。我在想这样的事情:
var properties = PropertiesService.getDocumentProperties();
var orderList = properties.getProperty("orders");
// iterate through orderList to add rows to a table with columns like description, a
我在GoogleSheets中有以下自定义函数,我试图在自定义函数中调用一个内置函数“TEXT”,但没有成功。谷歌表单将提示“未知”函数“文本”。有解决办法吗
function NextMonth(StockTradeDate) {
var DeltaDate;
if (**TEXT**(StockTradeDate,"mmm") = "JAN" ) {
DeltaDate = 30;
}
return DATEVALUE(StockTradeDate) + 31;
我有一个脚本已经运行了将近2年。我用日期更新工作表,删除/创建事件或创建新事件
这是我最后一次浏览并添加我的日期,这是正常的,它用事件id填充工作表单元格,我正在愉快地工作——但是当我转到日历时,该日期/时间没有显示任何内容
是否有我遗漏的东西,比如新的权限--没有抛出错误--日志中没有任何内容。我有一个事件id,但我不知道如何检查显示的内容,因为我在日历上看不到它——是否有方法检查事件id并查看它包含的内容
这张纸(我用管子隔开)
主题|开始日期|开始时间|结束日期|结束时间|全天活动|会议组
我正在学习谷歌应用程序脚本,同时构建仪表板。我正在从几张纸上收集数据。我的目标是通过每一张纸每周增加多少行来观察。这让我对自己的业务有了更深入的了解
我可以得到我想要检查的所有表格的长度,但是我找不到任何代码来帮助我找到特定行中的第一个空单元格。我希望将每个工作表的长度放在那里(在我的仪表板数据收集工作表中),以便稍后创建图表
我得到的是:
var range = ss.getRange(2, 1, 1, 1000);
var waarden = range.getValues();
Logge
我收到了一张Google Sheets脚本中的Base64编码图像。我可以通过日志成功生成图像
e.postData.contents
然后使用来解码并生成一个.jpg文件。但是当我试图在google脚本中进行解码并编写一个jpg文件来驱动时,它被破坏了。看起来很相似,但插入了一些替换字符。这是我的密码:
function doPost(e) {
var decoded = Utilities.base64Decode(e.postData.contents, Utilities.Char
试图对我的一个项目使用执行API,但出现以下错误:devMode:true。但当我制作devMode:false时,它可以完美地工作。
注意:我是API的所有者,使用的API来自同一个帐户(因此它应该可以理想地工作)
我已将脚本部署为api可执行文件,访问权限为“任何人”
我已在开发人员控制台中启用“应用程序脚本API”
oauth和apps脚本共享同一个项目
{
“错误”:{
“代码”:404,
“消息”:“未找到请求的实体。”,
“状态”:“未找到”
}
}我也经历过同样的情况。那么你能再次
[]
这是我的工作表,我在其中手动填写第一行的开始时间。我第一次手动打开链接,并将我对“可购买”列的判断标记为是/否。一旦我标记了我的判断,我希望“结束时间”列自动填充,下一行“URL”列中的链接自动打开并重复相同的序列。这是可能的应用程序脚本,因为我需要在谷歌电子表格上执行这项任务
if(r.getColumn()==4){
var endCell=r.offset(0,4);
if(endCell.getValue()==='')
var date=Utilities.formatDate(
我想知道文件是否是空的
我试过了
if (DocumentApp.getActiveDocument().getBody().getText().length < 1); {
showAlert('Document is empty')
return;
}
if(DocumentApp.getActiveDocument().getBody().getText().length
我已经开发了一个简单的Gmail插件,我已经使用清单发布了它。
最后,我得到了头部部署的Get ID链接,从这个开发ID我已经将它安装到我当前的Gmail帐户上,它工作得非常好。问题是使用开发id;我们需要在另一个Gmail帐户上使用它,但我遵循了相同的步骤
但它不起作用
更新:
我还安装了其他帐户,请检查ss
但是当我打开电子邮件时,我的插件不会出现
更新-2
当我们第一次安装开发者插件时,Gmail插件中有一个bug。加载项未显示在现有电子邮件中
我也面临同样的问题。我不知道为什么会这样,
我有一个GMail插件,它使用CardService作为UI。卡操作的一些回调函数占用30秒以上。因此,我得到以下错误
Gmail无法执行此附加操作
是否有任何方法可以在服务器端异步运行Google Apps脚本功能,这样我就可以向用户返回一些通知并在幕后继续工作
我尝试过使用一些类似的库,但运气不好,我能够在语法上使用Promissions,但在功能上它仍然是同步的。到目前为止,Gmail插件没有异步执行。即使存在一些问题,也无法在没有用户操作的情况下刷新UI
但是,有一个黑客。您可以做的是,
我正在寻找一个简单的脚本,根据另一个单元格的更新来更新单元格的值。这是为了方便学校工作人员通过三步流程填写下一年的学校日历,然后将每个活动发布到公共gcal上
以下是谷歌工作表链接:
日历底部的两个表过滤需要操作的条目。当这些标记为“完成”时,我希望在日历中找到该条目,并将状态列更新到流程的下一步(已记录或最终)
我需要像这样的东西:
=如果(L76=“完成”,[vlookup(h76,d3:ad70,-1,false)=P4,并将P4更改为“已记录”]
Google Sheets、Win10、
我正在使用脚本编辑器来编码一个东西来自动格式化我的文档。。。我应该为以下项目使用哪些代码:
间距-双
文本背景色-无背景色(如果可能,透明)
文本对齐-左侧
我尝试了文本背景色的代码:
var textbackgroundcolor = DocumentApp.getActiveDocument().getBody().asText().setBackgroundColor('#ffffff');
我想更改活动文档的格式,如果可能,仅更改正文
我得到了行距代码,但我希望它能改变所有段落,而不仅
我正试图在谷歌日历中创建一个重复事件,但我一直收到以下错误:无法将数组转换为(类)[]
问题在于我试图从单元格中获取数据来填充类。代码如下:
var recur4 = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeeks([rep]);
var ne4 = c.createAllDayEventSeries(title, start, recur4, options);
var sp = rep.split(",");
for
我试图制作一个导航菜单,跳转到我的工作表中的某些单元格,因为它很长。这可以通过以下代码完成:
function jumpToCellB4() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("B4");
sheet.setActiveSelection(range);
}
function onOpen() {
我有一个应用程序脚本部署的web应用程序,它使用GoogleSheet作为一个蹩脚的数据库。我想知道如何保证在访问和修改应用程序脚本中的数据时相互排斥?(类似互斥/信号量)
我很担心,因为web应用程序的一个实例不能共享变量(显然),而且我不确定访问google工作表数据的速度是否足够快,以防止出现这个问题(比如在google工作表中制作信号灯)
谢谢 您可以使用来实现这一点
也就是说,我认为你应该尽可能地减少它的使用,以防止你的应用程序更慢(应用程序脚本和工作表一开始不是很快)。在电子表格中设
有没有办法确定单元格是否为复选框?复选框的getValues()为布尔类型,为true或false。但假设我有一个单元格设置为TRUE,但不是复选框。有没有办法确定差异?您可以获得数据验证标准类型
function isCheckBox(range){
return range.getDataValidation()
.getCriteriaType() == "CHECKBOX";
//or .getCriteriaType()===Sp
我在GoogleApps脚本中创建了一个函数,当我在GoogleApps脚本中运行它时,它运行得很好。输出数据返回到Google工作表
function testFunction11() {
var rng = SpreadsheetApp.getActiveRange();
var encodedAuthInformation = Utilities.base64Encode("username:key");
var headers = {"Authorization" : "Ba
我的代码在谷歌日历中创建了一个事件,我需要获得开始时间的值,并添加2小时来获得我的结束时间
下面是my函数返回的数组示例:
[[kljlkjl, Manaf, Tue Jun 25 16:00:00 GMT+03:00 2019]]
这是我要修复的代码的一部分:
var data = ss.getRange("A"+activeRow+":G"+activeRow).getValues();
if(cellContent === "Manaf") {
Logger.l
我正在尝试构建一个基于谷歌服务的web应用程序,即gmail、电子表格、日历、驱动器,它将电子表格用作某种数据库。
web ui应仅可供当前公司的员工访问,不应访问脚本本身,但仍能写入电子表格。我知道,从技术上讲,我可以使用谷歌的API在服务器上为这些服务更快更好地构建同样的东西,但该公司要求web应用程序将基于他们当前使用的电子表格,以便他们仍然可以随时查看
问题是,我不希望他们能够访问脚本本身,这样他们就不能错误地编辑或删除它,并且在他们停止付费时删除应用程序的使用
我就是这样参加的-
1.
我想将多个范围从一张图纸复制到另一张图纸
我尝试过使用getRangelist函数,但它似乎不是专门为这个目的设计的
var rangeList = SpreadsheetApp.getActive().getRangeList(['B2:i8','B10:i16','B18:i24', 'B26:i32', 'B34:i40']);
var copyrange = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName("
我想在特定条件下为不同的列写一个时间戳。该函数应在一定范围内执行。我想用第13行作为标题行
这就是它的工作原理:
时间戳1
如果在第14行的第8列或第9列中编辑单元格,则应在同一行的第10列中写入定义的时间戳(“HH:MM:SS”)
时间戳2
如果在第14行的第16列中编辑单元格,则应在同一行的第18列中写入时间戳
为此,我使用下面的代码。不幸的是,这不起作用
如果我将范围扩展到整个表,在第一行中编写列标题(请参见:updateColName,timeStampColName),并按如下所示定
我的目标是跟踪我与客户的最后一次对话,并在为时过晚和失去联系之前采取适当措施
因此,我正在寻找一种方法,从我的收件箱中收集上次发送给特定联系人的电子邮件的时间信息,并将其保存在谷歌表单中。因此,我想知道是否有一个简单的代码,我可以输入,让它运行
我不是编码员,所以任何帮助都会有帮助。:) 您可以尝试使用Gmail API和SpreadsheetApp类。程序可以是:
通过电子邮件获取身份证。您可以使用q参数执行高级搜索查询
使用电子邮件Id获取电子邮件地址
使用以下命令更新工作表
在这些链接中,
一直在使用CalendarApp帮助将来自不同帐户的多个Google日历聚合到一个格式良好的电子表格中。但是,我们希望将不仅仅是这些日历合并到系统中,并且从订阅的导入日历中检索数据时遇到了问题
此日历来自Trello(使用通电创建基于到期日的日历),它提供了一个URL供我们在Google上订阅。当我尝试使用相同的CalendarApp.getCalendarById(calendarId)时,它似乎无法访问事件数据并返回null
以下是日历id供参考:mp9si8iqi6uop4a20pr0r1
我想跑
简单的谷歌脚本
但是,它不允许我授权。我怎样才能继续
更新:
已为某些用户解决了此问题。这仍然是一个解决办法,可能不适用于所有人。因此,请在下面列出问题
这似乎是一个影响某些用户的新问题。你可以★(左上角)让谷歌开发者知道你受到这个问题的影响,并确定问题的优先顺序。这就是发生的事情。要解决这个问题,只需复制脚本的内容,将其删除,然后创建一个具有相同内容的全新脚本,或者为它命名,以防迷信。如果不起作用,请创建另一个具有相同内容的电子表格并继续有时这只是一个暂时的问题。可能由于存储的浏览数
我将数据从一个函数传递到另一个有循环的函数。循环只执行一次,执行次数不超过data.length。请帮忙
function first(){
//start code...
var symbol = filetext.substr(filetext.search("Title:"));
symbol = symbol.split(' ');
symbol = symbol[1]; //someText
if(symbol == 'someText') {
seco
因此,我的项目的要点是将添加到电子表格A的新数据复制到电子表格B。目的是使用电子表格A作为输入方法,电子表格B作为从所有时间输入到A的所有数据的日志。可以说是一张母版纸。请注意,这将在基于时间的触发器上运行,并且将删除工作表a中的所有数据
我从Stackoverflow(感谢您的制作者)中获取了一些代码,并做了一些更改。我可以将第一组数据从A复制到B,但当我从A中删除数据时,添加新数据并运行代码,我会丢失在B中输入的所有数据。我还可以使用use=importrange
我的解决方案是合乎逻辑的,
我正在尝试使用GoogleChartAPI生成图表,并将图表作为图像。请注意,我在服务器端而不是浏览器端渲染图表(即不使用Google可视化API)
在我的一些图表中,我画了一条垂直线,代表一个目标。由于目标对于所有不同的x值都是相同的,因此我只需要在图表顶部标记它,如下图所示:
我可以设法只显示顶部标签,但:
-如何删除小注释线?尤其是当没有显示标签时!
-如何将此标签移到行的顶部而不是右侧(到)
防止与条形标签重叠(如A=95)?
-我如何格式化这个独特的标签(即用背景色设置框中的文本)
因此,我一直在解决一个问题,即从电子表格中提取结构化数据,然后使用应用程序脚本将其插入到谷歌文档的模板中
我让它简单地作为串联字符串工作,但我正试图用BODY类来完成,所以如果我想把最终产品放到Gmail中,可能会更容易。或者如果我想保留表结构
所以,除了这一段代码之外,一切都很好。我正在与挫折作斗争。这是一个奇怪的语法,因为它是一个布尔运算,对吗
这就是我所拥有的,我认为很容易摸索:
for(var i = 0; i < num; i++) {
var songName
在学术论文中,现象的例子通常放在自己的顺序编号段落中。这些段落不一定相邻,而是分散在整个文档中。下面是一个带有顺序编号段落的示例文档,给出了当前主题的示例:
有很多种语言,例如英语(参见示例1)、西班牙语
(参见示例2)、丹麦语(参见示例3)
(1)谷歌文档很酷。
(2)谷歌公司的员工。
(3)谷歌Dokummenter seje
语言学是对语言的科学研究,例如,
葡萄牙语(参见示例4):
(4)葡萄牙
语言,人类和计算机,是迷人的
我知道,静态文本可以通过以下方式插入到google文档中的光标
在GoogleApps脚本文档中,有一个关于服务器端私有函数的页面。这应该可以解释,如果没有专用功能,服务器代码可以从用户浏览器中看到。
有人能解释一下你是如何在浏览器中看到这样的服务器端功能的吗?
谢谢
请参阅:服务器代码在用户浏览器上永远不可见,只有函数名。私有函数隐藏了这些名称,但更重要的是,它们取消了前端直接调用这些名称的功能
换句话说,私有函数允许您定义后端入口点,防止恶意用户绕过您可能进行的某些检查,直接调用“内部”函数
为了展示查看名称和调用任何非私有后端函数是多么容易,我举了这个
在共享我的谷歌工作表时,我必须使复选框可编辑,以允许用户切换(选中)复选框。但是,用户可以编辑复选框所在的单元格,该复选框用于中断公式
我认为答案可能是某种应用程序脚本,如果有人编辑复选框,它可以恢复复选框值?(保护复选框以防止编辑会使其无法使用,因为用户无法编辑该范围。)是否有人有此解决方案或其他解决方案的脚本?您好,也许可以创建一个onEdit()处理程序来拒绝无效的值?好主意。我想我可以编写一个脚本,在编辑后将单元格更改回oldValue(valid)。但是是否可以拒绝该值以避免进行编辑?
我一直试图通过以下代码打开一个现有的电子表格,它没有给出任何错误,但也没有打开电子表格
在这方面有人能帮忙吗
function myFunction() {
var js = " \
<script> \
window.open('https://docs.google.com/spreadsheets/d/1xkStjPEUy6C7ZAaZhTL4DFyDjZnKciHCb7RteZ3vtB8/edit?usp=sharing'); \
如果提示中没有输入,我可以用什么来知道?已尝试了,但似乎不适用于此情况。您只需检查是否为空字符串:
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Enter your name:');
console.log(response.getResponseText()=="")
如果response.getResponseText()==”为true,则表示未提供任何输入
这是我正在运行的代码
document.addEventListener('DOMContentLoaded', function() {
google.script.run.withSuccessHandler(populateSearchDropDown).searchByVehicleNum();
});
现在我的问题是,,
我可以在SuccessHandler中传递2个回调函数吗
像这样的
google.script.run.withSuccessHandler(function1,f
我有以下代码:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("WREQ");
var pasteSheet = ss.getSheetByName("Orders/Deliveries");
// get source range
var source = copyShee
我想使用Google Apps脚本更改整个文档的页面颜色。我不想更改段落的突出显示颜色。我想做的事情相当于去文件>页面设置>页面颜色我相信你的目标如下
您想更改Google文档的背景色
您希望使用谷歌应用程序脚本实现这一点
我认为在这种情况下,有两种模式
模式1:
在此模式中,使用文档服务(DocumentApp)。示例脚本如下所示
示例脚本:
请将以下脚本复制并粘贴到Google文档的脚本编辑器中,然后运行函数myFunction。在此示例中,文档的背景设置为红色
function myF
我有一个脚本,可以在60天的滚动窗口中删除重复项。当一个联系人出现在工作表中时,我需要该工作表从该点开始回顾60天,如果是重复的,则不计算在内。这个脚本的问题是,随着时间的推移,它会继续更改前一天的计数。它正在改变前几天的每日计数。一天结束后,不应调整前一天的计数。
我只需要一个修改,在一天结束后,它不应该在未来改变。
这是剧本
const sheetName = 'Data';
const matchRecordsWithinDays = 60;
function removeDuplica
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 491 页