我有一张保存ID的表。现在,我偶尔需要读取这些ID,并检查表中的其他值(名称)是否仍然符合ID。我的代码是:
var name = sheet.getRange(line,row).getValue();
var id = sheet.getRange(line,10).getValue();
if(name!== "" && id === "")
{
try
{ get an ID}
从我所读到的,我知道单独调用每个单元格值需要更多的时间。然而,我不知道如何应用getValue来修复这些情况。基本上相同的问题在不同的衣服我有以下代码:
var id = sheet.getRange(line,row).getValue();
if(id!== "" && id!="Not Found" && id!="Not Found old")
{
var url = "some api url "+id+"api key";
try
{
var str = UrlFetchApp.fetch(url).getContentText();
那么我如何使用get值来检查我得到的每个ID呢。我想我得用一些
foreach(id)
或者
for(i= 0; i <= id.range; i++)
{
use id[i] to blablabal
}
调用getValue后,会得到一个双数组,如[[value A1, value B1],[value A2, value B2]]
。在for
循环中处理它,如果涉及所有行/列组合,则可能是双循环。请记住,电子表格使用1基索引,但在JavaScript中,它们是基于0的。通常,最上面的一行是标题,所以下面的循环中省略了它。
function processData() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange(); // all of data. could be some part of it
var values = range.getValues();
for (var i = 1; i < values.length; i++) { // skipping with header row
for (var j = 0; j < values[0].length; j++) {
if (condition) {
// do something to values[i][j];
}
}
}
range.setValues(values); // put updated values back
}
如果感兴趣的数据位于(比如)列D中,那么您可以决定只获取该列。例如:
function fetchStuff() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var range = sheet.getRange(1, 4, lastRow, 1); // all of column D, note 1-based indexing
var values = range.getValues();
for (var i = 1; i < values.length; i++) { // skipping header row
if (condition) {
var str = UrlFetchApp.fetch(values[i][0]).getContentText();
// do something
}
}
}
请记住,fetch
是到目前为止最慢的操作,并且受配额限制。使用Utilities.sleep(ms)
避免过于频繁地调用服务,并跟踪您请求脚本获取的数据量。
我发现CacheService非常快(duh),所以决定创建一个CacheManager来存储所有内容。 JS对象 如果 base64 字符串是 我能够以这种方式在~1.2秒内存储/调用~3MB的原始JSON数据(速度类似于DriveApp API调用) 我尝试搜索可以创建的总缓存对象数的总体限制,但没有找到太多。有没有人知道大量缓存字符串的总体限制或性能下降? 我的“缓存管理器”的源代码 编辑:
在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia
我正在尝试使用Google驱动器列出文件。 使用中的答案https://stackoverflow.com/a/11280257我发现了一个无法找到原因的问题。 我有这个错误: 在行中
谢谢大家。 我有一个包含7张的谷歌电子表格。我试图将最后一张工作表中的数据从单元格A1: D1移动到附加到同一工作表底部的新行。 下面是我正在使用的代码片段: 在我运行代码后,在标签“薪资检查历史记录”中,在工作表底部的新行中,我得到以下内容:“[Ljava.lang.对象;@3e0d05f9” 有人能告诉我(a)这个错误是什么,(b)这意味着什么,以及(c)我如何修复这个问题或实现我的目标,即“
我希望每天凌晨1点从外部来源将一些数据输入到谷歌的工作表中。进口产品的数量将有所不同。 然后,我希望在数据上传完成后,按价格对数据进行排序,这将是凌晨1:05左右。 我看到它是可能的运行功能为谷歌工作表在一个时间的基础上。 我需要什么样的脚本来按价格对数据进行排序,所以最便宜的项目是每天早上运行脚本后的第2行。 要在Google Sheets中手动执行此操作,我会这样做-*突出显示第2行到数据,排
我试图使用一个谷歌脚本,从检索2个证券字段,并将输出保存到Google Sheet文件。我还需要脚本将datetime添加到工作表的第一列。 我创建了一个包含3列的基本Google工作表: A的格式为DateTime。第1行中有列名称date,第2行之后为空 以下是我的功能: 以下是输出: C和D列的输出正确。A列输出错误。每次我运行该函数时,每一行都会在最后一行的上方添加: 我第一次运行该函数是