有没有办法访问传递给我的函数的单元格的单元格坐标(以 A1 表示法)?
例如,如果我的功能是这样的
function displayA1Notation(myCell){
return myCell.getA1Notation();
}
Run Code Online (Sandbox Code Playgroud)
我将以下内容放入单元格 B4 中:
=displayA1Notation(C6)
Run Code Online (Sandbox Code Playgroud)
我希望看到这个:
C6
Run Code Online (Sandbox Code Playgroud)
但我实际看到的是这样的:
Kansas
Run Code Online (Sandbox Code Playgroud)
(“Kansas”是C6的实际单元格值)
我知道这看起来很容易......我只是努力让它发挥作用。
谢谢~!
我正在编写一个要在电子表格中使用的自定义函数,我希望至少能够显示一些数据。似乎没有什么工作,例如Browser.msgBox没有找到适当的权限。
断点不会中断执行。
我对这段代码有一些希望
function test() {
var s = "test"
Logger.log(s)
return s + s
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将电子表格中"=test()"的一个单元格设置为该单元格时,该单元格正确显示了值“testtest”,但是当我返回脚本编辑器并使用视图>执行记录时,或者view>logs我什么也没看到。
也许这个日志记录到某个地方的特殊文件?
我在单元格中有以下功能.它从其他单元格中读取日期,而不是计算年龄并以"3周5天"的格式进行转换
=INT((TODAY()-D19)/7)&" weeks, "&(TODAY()-D19-(INT((TODAY()-D19)/7)*7))&" days"
Run Code Online (Sandbox Code Playgroud)
有用.
现在我想将这个长字符串替换为一个简单的函数:
=AGEINWEEKS(D19)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我已经尝试在脚本编辑器中编写此脚本
function ageInWeeks(from_date) {
return SpreadsheetApp.getActiveSheet().getRange("D16").setFormula('=ROUND((TODAY()-D16)/7)&" weeks, "&(TODAY()-D16-(ROUND((TODAY()-D16)/7)*7))&" days"');
}
Run Code Online (Sandbox Code Playgroud)
但它返回错误
错误:您无权调用setFormula(第3行,文件"Code")
先感谢您!
此致,Tomaž
据我了解,为了跟踪我们的配额使用情况,我们需要在我们计划使用的服务上向Google App Service提供API密钥.
在我的例子中,我有一个带有Origin和Destination的电子表格以及一个自定义函数来计算它们之间的距离.
我遇到了通过调用来满足配额的问题.getDirections():
错误:服务调用太多次一天:路由.(行**).
代码示例:
function getDirections_(origin, destination) {
var directionFinder = Maps.newDirectionFinder();
directionFinder.setOrigin(origin);
directionFinder.setDestination(destination);
var directions = directionFinder.getDirections();
return directions;
}
Run Code Online (Sandbox Code Playgroud)
所以我读到如果我将API密钥分配给我的项目,我应该能够看到使用情况以及我与免费配额的接近程度.
在脚本编辑器中,我确实启用了"资源"菜单/"高级Google服务"下的所有API.然后我去了Google Developers Console,在那里我没有看到任何关于我的自定义函数调用Google Maps API或任何API使用次数的记录.
从逻辑上讲,我认为在我的脚本中我需要设置我的谷歌API密钥,以便我的脚本开始以我的用户名调用API并计算我使用某些API的时间.我想我现在正在使用谷歌地图API作为匿名,因为整个公司被分配了相同的IP,所以我们用尽许多数字来调用这个功能.
如果你知道一种方法将我的简单电子表格功能连接到我拥有的公共API访问密钥,请回复底线.
谢谢你,保罗
测试脚本
$i = 0;
array_uintersect(['foo', 'bar'], ['baz', 'qux'], function($a, $b) use (&$i) {
print_r([$a, $b, $i++]);
});
Run Code Online (Sandbox Code Playgroud)
实际结果
Array
(
[0] => bar
[1] => foo
[2] => 0
)
Array
(
[0] => qux
[1] => baz
[2] => 1
)
Array
(
[0] => bar
[1] => qux
[2] => 2
)
Array
(
[0] => bar
[1] => foo
[2] => 3
)
Run Code Online (Sandbox Code Playgroud)
预期结果
Array
(
[0] => foo
[1] => baz
[2] => 0
)
Array …Run Code Online (Sandbox Code Playgroud) 我对 Google Apps 脚本(以及 JavaScript)非常陌生,但我一直在尝试修补它以获取乐趣。
我尝试编写一个脚本来获取 Google Sheets 中的 API 价格数据,但发现在同一单元格中重新评估脚本时返回的值没有更新。
下面是一个从 Coinbase 的 API 获取比特币价格数据的脚本。该脚本解析请求的 JSON 响应,如此处所述。
function getBTCPrice() {
var url = "https://api.coinbase.com/v2/prices/BTC-USD/spot";
var response = UrlFetchApp.fetch(url);
var jsonSpotPrice = response.getContentText();
var parseSpotPrice = JSON.parse(jsonSpotPrice);
var price = "$" + parseSpotPrice.data.amount;
return price
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我输入=getBTCPrice()某个单元格,然后稍后重新评估,我会得到相同的价格;但是,如果我在不同的单元格中评估脚本,我会得到不同的结果。
我读过一些关于 Google 在单元格中缓存值的内容,因此可能不会评估脚本,因为单元格的值没有更改。这里是这样吗?如果是这样,有解决方法吗?
任何帮助是极大的赞赏!
google-apps google-sheets google-apps-script custom-function
情况:我在 Google Apps Script 套件中创建了一个新项目。在我的 Code.gs 中,我定义了两个自定义函数,如下所示:
问题:当我尝试按照过程来测试附加组件(此处的说明)时,使用最新的代码和配置“已安装并启用”,我似乎无法使用脚本中定义的自定义函数:
任何想法为什么?
附加信息:
如果我在不通过 G Suite 的情况下创建脚本,只需打开“工具”>“脚本”等,自定义函数就可以工作。也就是说,我确实需要采用 G 套件方式,因为我计划将此脚本作为附加组件发布。
另外,我知道脚本正在工作/正在执行,因为我有一些代码可以创建一个确实出现在工作表中的自定义菜单条目。
我正在创建一个棋盘游戏,为此我决定选择 Google 表格。我已将我的问题简化为一个由一张纸和一个脚本组成的最小示例。
以下几点参考我的骰子表:
DICEFACES应用于范围E2:I2和E10:I10的函数的结果。
DICEFACES是我在Code.gs与样式表关联的文件中的脚本编辑器中创建的自定义函数。它返回与提供范围内的骰子对应的骰子面矩阵。它的身体如下:
function DICEFACES(unused_ref_to_range_containing_dices)
{
var app = SpreadsheetApp;
var spr = app.getActiveSheet();
// In the end this array will hold the dice faces. For example two
// 1d6 dices would result in …Run Code Online (Sandbox Code Playgroud)google-sheets google-apps-script custom-function google-sheets-formula
我的 Google 表格中出现以下错误:
Service invoked too many times for one day: urlfetch
Run Code Online (Sandbox Code Playgroud)
我知道我没有进行 10 万次调用,但我的工作表中确实有很多自定义函数。我尝试制作一张新工作表并将脚本复制/粘贴到该工作表中,但我仍然遇到相同的错误。然后我切换了我的帐户,制作了一张新表,添加了代码,但仍然出现错误。
这仅仅是因为我在同一台计算机上吗?谷歌是否足够聪明以意识到我和试图这样做的人是同一个人?我非常怀疑,所以我想知道为什么它会抛出这个错误,即使在切换帐户并制作新表格之后。
除此之外,有什么方法可以确保我以后不会超过限制吗?这个错误让我至少回到了我正在做的事情上一天。我确实计划编写一个脚本来将导入的 HTML 作为值复制/粘贴到另一个工作表中,但是在我开始工作之前,我需要一个临时修复。
示例代码:
Service invoked too many times for one day: urlfetch
Run Code Online (Sandbox Code Playgroud)
那是用于特定功能的一组“代码”。我多次拉动两个不同的功能。我有大约 600 个一个函数,另一个函数有 4 个。如果所有这些都同时运行,那将只有一千多个调用。
我应该注意,我的驱动器中还有另一张工作表,它每小时自动更新一个UrlFetch. 我不相信这会影响这一点,因为拉率非常低。
json google-sheets urlfetch google-apps-script custom-function
我想使用谷歌应用程序脚本在谷歌电子表格中创建一个简单的自定义总和公式。
\n\n function somaDias(range, days) {\n var sum = 0;\n\n for(i=0; i<days; i++){\n sum = sum + range[i];\n }\n\n\n return soma;\n }\nRun Code Online (Sandbox Code Playgroud)\n\n我将在报告中使用此函数,该报告有一列包含每月每一天的货币值。这个想法是选择整列值,将其作为范围传递,然后将这些值求和到该月的某一天。我知道有问题
\n\n sum = sum + range[i];\nRun Code Online (Sandbox Code Playgroud)\n\n因为,当我用只有 1 的列测试它时...返回是“0111111”
\n\n=somaDias(C9:C15;6) // 应该返回 6,但它返回 0111111
\n\n我不想使用 =sum(),因为范围根据日期而变化。我想传递该月 30 天的范围,然后传递我想要求和的天数。如果我使用 sum,我就必须每天重新选择范围......
\n\n我\xc2\xb4m 做错了什么?
\ncustom-function ×10
add-on ×1
arrays ×1
debugging ×1
filtering ×1
google-apps ×1
google-maps ×1
json ×1
php ×1
urlfetch ×1