当前位置: 首页 > 知识库问答 >
问题:

Google导入不工作,应用程序脚本无法从单元格读取数据

武友樵
2023-03-14

我最大的问题是偶尔我的谷歌表格应用程序脚本无法读取单元格的内容。它会停止工作5-30分钟,然后重新开始工作。这是一个实时评分表,所以这是一个大问题,不能保存数据相当长的时间。

我尝试了多种方式获取单元格数据:ss.getSheetByName('Sheet1'). getRange('L1'). getValue()我还创建了一个数组,方法是使用一个范围和该数组中的数据。两种方式都可以工作一段时间,它会持续几个小时没有问题,然后就不能读取单元格内容。

function SaveScore(btn) {
  var ui = SpreadsheetApp.getUi(); // Same variations.
  var ss = SpreadsheetApp.getActiveSpreadsheet(); // ss is now the spreadsheet the script is associated with
  //var ss = SpreadsheetApp.openById('1rKzGRC7gAWKc1m4yrEDYlospgE-JcAxngV-70rNTbTs').getSheetByName('Announcer');

  var scoreData = ss.getSheetByName('Announcer').getRange('A1:Q7').getValues();
  //var curDrawRow = ss.getSheetByName('Setup').getRange('I11').getValue();
  var curDrawRow = scoreData[4][16];


  //var scoreJ1 = scoreData[1][1];
  //var scoreJ2 = scoreData[1][2];
  //var scoreJ3 = scoreData[1][3];
  //var scoreTotal = scoreData[1][4];
  //var classNum = scoreData[0][11];

  //var drawNumb = scoreData[3][0];
  //var exhNum = scoreData[3][8];

  var curOffset = scoreData[6][16];
  //var curOffset = ss.getSheetByName('Announcer').getRange('Q7').getValue();
  //var scoreJ1 = ss.getSheetByName('Announcer').getRange('B2').getValue();
  var scoreJ1 = scoreData[1][1];
  //var scoreJ2 = ss.getSheetByName('Announcer').getRange('C2').getValue();
  var scoreJ2 = scoreData[1][2];
  //var scoreJ3 = ss.getSheetByName('Announcer').getRange('D2').getValue();
  var scoreJ3 = scoreData[1][3];
  //var scoreTotal = ss.getSheetByName('Announcer').getRange('E2').getValue();
  var scoreTotal = scoreData[1][4];
  //var classNum = ss.getSheetByName('Announcer').getRange('L1').getValue();
  var classNum = scoreData[0][11];
  //var drawNumb = ss.getSheetByName('Announcer').getRange('Raw Data!A' + (curDrawRow + curOffset)).getValue();
  var drawNumb = scoreData[3][0];
  //if (drawNumb == '') {
  //  var drawNumb = ss.getSheetByName('Raw Data').getRange('A' + (curDrawRow + curOffset)).getValue();
  //}
  //if (drawNumb == '') {
  //  var drawNumb = ss.getSheetByName('Announcer').getRange('A4').getValue();
  //}
  //var exhNum = ss.getSheetByName('Announcer').getRange('Raw Data!B' + (curDrawRow + curOffset)).getValue();
  var exhNum = scoreData[3][8];

  //if (exhNum == '') {
  //  var exhNum = ss.getSheetByName('Raw Data').getRange('B' + (curDrawRow + curOffset)).getValue();
  //}
  //if (exhNum == '') {
  //  var drawNumb = ss.getSheetByName('Announcer').getRange('I4').getValue();
  //}

  if (scoreTotal == '--' && btn != 'review') {
    ui.alert('Please enter a score');
    ss.getActiveSheet().setActiveRange(ss.getActiveSheet().getRange('B2'));
  }else if (classNum == '') {
    ui.alert('Class # is blank. This is a google syncing issue and typically will fix itself in about 5-10 minutes. Please wait and try again in 5-10 minutes.');
  }else if (drawNumb == '') {
    ui.alert('Draw # is blank. This is a google syncing issue and typically will fix itself in about 5-10 minutes. Please wait and try again in 5-10 minutes.');
  }else if (exhNum == '') {
    ui.alert('Exhibitor # is blank. This is a google syncing issue and typically will fix itself in about 5-10 minutes. Please wait and try again in 5-10 minutes.');
  }else{
}

//如果我能做到这一点,剩下的代码就可以工作了。我经常收到抽签通知,抽签是空白的,或者参展商是空白的。

我希望每次都是数字。但是当它不起作用时,它们都是空白的。

共有1个答案

邬弘化
2023-03-14

这对我有效:

function runOne(btn) {
  var ui = SpreadsheetApp.getUi(); // Same variations.
  var ss = SpreadsheetApp.getActiveSpreadsheet(); // ss is now the spreadsheet the script is associated with
  var scoreData = ss.getSheetByName('Announcer').getRange('A1:Q7').getValues();
  var curDrawRow = scoreData[4][16];
  var curOffset = scoreData[6][16];
  var scoreJ1 = scoreData[1][1];
  var scoreJ2 = scoreData[1][2];
  var scoreJ3 = scoreData[1][3];
  var scoreTotal = scoreData[1][4];
  var classNum = scoreData[0][11];
  var drawNumb = scoreData[3][0];
  var exhNum = scoreData[3][8];
  if (scoreTotal == '--' && btn != 'review') {
    ui.alert('Please enter a score');
    ss.getActiveSheet().setActiveRange(ss.getActiveSheet().getRange('B2'));
  }else if (classNum == '') {
    ui.alert('Class # is blank. This is a google syncing issue and typically will fix itself in about 5-10 minutes. Please wait and try again in 5-10 minutes.');
  }else if (drawNumb == '') {
    ui.alert('Draw # is blank. This is a google syncing issue and typically will fix itself in about 5-10 minutes. Please wait and try again in 5-10 minutes.');
  }else if (exhNum == '') {
    ui.alert('Exhibitor # is blank. This is a google syncing issue and typically will fix itself in about 5-10 minutes. Please wait and try again in 5-10 minutes.');
  }
}
 类似资料:
  • 使用谷歌表格应用程序脚本,是否有可能得到X单元格的单元格范围如下所示: 我不想更改每个单元格的颜色,只想更改那些具有正确条件的单元格。 我知道这样做是可能的: 但是这种方法需要很长时间才能完成for循环,因为有数百个单元需要扫描。我宁愿只对整个范围使用一次getRange(而不是一次只使用一个单元格),然后从该范围使用getRange(它应该生成一个2d数组,对吗?)设置单元格值。我想那会快得多。

  • 我有一个非常基本的应用程序,它具有和,分别创建模式和导入数据。 我的在中生成得很好,但是由于某些原因没有导入数据。我在表中看到记录。 我也没有看到任何错误。 pom.xml Application.Properties src/main/resources/schema.SQL demorestapp.java

  • 把所有信息写到电子表格中。 删除唯一的标记信息以防止重复运行。 然后使用form mule addon从电子表格发送电子邮件。 到目前为止,我已经处理了第1步(简单),而第2步和第3步(我不是一个编码器,我可以读、解串和黑。从头开始写是完全不同的事情)。我以前处理过4次,我认为这是最好的处理方法。 通过脚本,我将信息提取到电子表格中,通过插件,我使用电子表格中的信息发送电子邮件。 这是我到目前为止

  • 我正在使用GoogleApps脚本将来自GoogleSheets的问题添加到GoogleForm中。列表从两个单独的数组中读取,并作为单独的网格类型问题添加。我还将工作表设置为表单结果的目标。 当我运行脚本时,表单得到了完美的更新。如果要添加10个项目,则在表单中添加10个问题。但是,在链接的表单响应表中,经常会添加标题为“[第1行]”的其他列。每次运行脚本时,附加列的数量及其位置都会发生变化。我

  • 我正在学习谷歌应用程序脚本,同时构建仪表板。我正在从几张纸上收集数据。我的目标是看每一张纸每周增长多少行。这让我了解了我的业务情况。 我可以获取我要检查的所有工作表的长度,但是我找不到任何代码来帮助我找到特定行中的第一个空单元格。我想将每个工作表的长度放在那里(在我的仪表板数据收集表中)以稍后创建图表。 我所拥有的是: 这是可行的,但我无法想象这是最好的解决方案(或最快的解决方案)。如果我的长度超

  • 问题内容: 我正在尝试使用Excel中电子表格中的数据,但始终会出现此错误,已经尝试将工作表格式化为文本和数字格式,但该错误仍然存​​在。 我看到一个使用它的人解决了,但是我不知道我在代码中适合该段落的地方。 问题答案: 在这种情况下,格式化程序可以正常工作。