【问题标题】:i want to ask about Google App Script js is not working我想问一下 Google App Script js 不工作
【发布时间】:2020-05-06 23:45:46
【问题描述】:

问题一:

以下是一段代码,它从函数参数中的单元格中获取值并处理它们。

function functionName(Parameter1,Parameter2,ParameterOutput)


{ 
  Parameter1.substr(0, 4);


  Parameter2.toString();


...........


...........

Return ParameterOutput;

}

Parameter1 有数字 544578613

我只想保留前 4 位数字,但所有内置函数都不起作用

.toString()
.substr(0, 4)
.substring(0, 4)

或任何其他,它们都没有工作。 它仍然给出输出 544578613

TypeError: 无法读取未定义的属性 'substr'

在函数中加入folling解决

var app = SpreadsheetApp;

var activeSheet = app.getActiveSpreadsheet().getActiveSheet();

问题 2: 第二个问题是我通过以下功能连续检查了重复项。它在第一张纸上完美运行。 但我想为第二张纸修改它请帮助我如何在第二张纸上实现它。

图片有功能请点击 enter image description here

========================================

问题 3:

我有从列中获取数据的函数。运行第一个 For 循环以仅保留前 9 个字符。运行第二个循环以从第 1 行中选择数据,运行第三个嵌套循环以查找重复项。问题是该列有 1400 行,因此第二个循环运行 1400 次,第三个嵌套循环运行 1400 次 - 外循环的每次迭代。

这需要很多时间,谷歌返回执行超时错误。 Google 执行此任务的速度非常慢。怎么解决?

这个函数对于最多 500 行运行良好

【问题讨论】:

  • 如果您有第二个问题,请不要在此处发布并编辑您的问题。继续创建另一个帖子在那里提问。
  • 我认为您可能误解了 StackOverflow 的工作原理。请参考How to Ask。您不应该在一个帖子中发布多个问题。每当您在代码中遇到新问题时,请继续并将它们作为新问题发布,我相信有人会愿意帮助您。

标签: google-apps-script


【解决方案1】:

我不明白您为什么使用substr() 而不是substring()。您使用substr 的来源是什么。

我只是尝试了一个简单的示例,对我来说,使用正确的方法 (substring) 获得第 4 个数字效果很好。

function test(){
  var a = "2020notimportant";

  var result = a.substring(0, 4);

  Logger.log(result);

}

2020

尝试使用正确的方法,看看是否有效。


这当然可以与谷歌表格单元一起使用,只需很少调整即可创建自定义功能。

function TEST(input){
//  var a = "2020notimportant";
  Logger.log(input);
  var a = input.toString(); // Convert to String before `substring`

  var result = a.substring(0, 4);

  Logger.log(result);

  return result;

}

看到我在substring()之前使用了toString,以防输入参数是非字符串。在这里,您可以看到在某些单元格中工作的示例:

【讨论】:

  • 我什么都试过了看到它不会工作。像这样;函数测试(参数输入){ var a = 参数输入; var 结果 = a.substring(0, 4);记录器.log(结果); }
  • 我编辑了我的问题,向您展示这确实可以使用单元格参数。如果您仍然有问题,请考虑提供有关您的问题的更多信息,共享电子表格以及输入和预期输出示例。还要注意输入的类型。否则我不知道你的问题是什么。
  • 是的,我以前在我的原始表上使用过,在这里我让它看起来很简单。参数1..toString().substr(0, 4);
  • 但是我通过在函数顶部添加以下内容找到了解决方案,并且 inbult 函数开始工作 var app = SpreadsheetApp; var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
  • 我不太明白你说的这些是什么意思。您能否发布/解释您的解决方案,以便其他人可以从中受益?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多