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

当Google Sheet未使用Google应用程序脚本打开时,如何从其他源更新导入范围数据

金高飞
2023-03-14

我有一个可安装的时间驱动触发器,在谷歌表单中间隔30分钟。如果有任何挂起的任务,触发器将发送警报。当Google工作表打开时,触发器工作正常。但问题是,当谷歌工作表未打开时,触发器正在获取旧数据,这会导致错误警报。挂起的任务数据是使用其他工作表中的导入函数计算的。另一张工作表与谷歌表单链接,在谷歌表单中,工作表通过用户的输出得到更新。

因此,如果有人可以帮助应用程序脚本代码,它将刷新工作表事件的所有数据,那么工作表将不会打开,然后触发器将完成该工作。

注意:源文件和目标文件设置为在更改和每分钟自动更新。我已经将此发布到谷歌应用程序脚本错误报告跟踪器,他们建议在这里寻求帮助。您可以使用链接检查:https://issuetracker.google.com/issues/168644365

我的代码:

  function AutoTelegramReminder() {
 
  var SpreadsheetId = 'My_SpreadSheetId';
  var SheetName = 'Pending Details';
  var ss = SpreadsheetApp.openById(SpreadsheetId)
  var sheet = ss.getSheetByName(SheetName);
 
  //Select the column we will check for the first blank cell
  var columnToCheck = sheet.getRange("D:D").getValues();
 
  // Get the last row based on the data range of a single column.
  var lastRow = getLastRowSpecial(columnToCheck);
 
  if (lastRow>1){
 
  var SlipNo = sheet.getRange(2, 4, lastRow-1).getValues();
  //getRange(row, column, numRows)
 

 //Send alert to Telegram
  var botSecret = "My_Bot_Secret"; //KCSL BOT ID
  var chatId = "My_Chat_Id"; //M.B.D Group ID
  var Url = "https://api.telegram.org/bot";
  var Link = "My_Google_Sheet_Link_For_Users";
  var whatsapLink = "My_Whatsapp_Link";

 
  var body = "MY_TEXT" + SlipNo + "MY_TEXT " + whatsapLink + "MY_TEXT";
 
  var response = UrlFetchApp.fetch( Url + botSecret + "/sendMessage?text=" + encodeURIComponent(body) + "&chat_id=" + chatId + "&parse_mode=HTML&disable_web_page_preview=TRUE");

                }

}


//Function To Get Last Row

function getLastRowSpecial(range){
  var rowNum = 0;
  var blank = false;
  for(var row = 0; row < range.length; row++){

    if(range[row][0] === "" && !blank){
      rowNum = row;
      blank = true;
    }else if(range[row][0] !== ""){
      blank = false;
    };
  };
  return rowNum;
};

共有1个答案

汪辰阳
2023-03-14

如果你想让数据刷新,然后代替=importrange尝试使用脚本调用工作表,使用SpreadsheetApp.openById('Sheet Id'),然后使用getRange(). getValue获取范围().

 类似资料:
  • 从其他应用程序(如 Photoshop、Illustrator、After Effects、Sketch)中导入资源,甚至将图像从 Web 浏览器拖放到 Adobe XD 或将图像从剪贴板粘贴到 Adobe XD 中。 您可以将资源从其他 Adobe 应用程序(例如 Photoshop、Illustrator)和第三方应用程序(如 Sketch)导入 Adobe XD。您可以在 XD 中进一步改进

  • 我有一个工作表,我需要从中获取值并在新工作表中进行设置,其中一个值需要我在索引20,26处对字符串值进行切片。我可以使用.getValue().slice(20,26)和.setValue()实现这一点。但是,在所有行中都设置了相同的数据,这是意料之中的,因为我只获得一个单元格的数据。为了解决这个问题,我尝试了一个for循环,但失败了。 当我尝试.getValues().slice(20,26)时

  • 我使用SpreadSheet中的脚本在活动行下面添加行,并从活动行复制内容。在PC上,我可以通过图像/绘图触发脚本,它工作得很好。但是我不知道如何让它在iOS应用程序中工作,在应用程序中,图像触发不起作用,从一个应用程序复制内容到另一个应用程序是噩梦。我尝试了onEdit和isChecked为每一行,但它会给我新的行在每个编辑。你能帮忙吗? https://docs.google.com/spre

  • 使用谷歌表格应用程序脚本,是否有可能得到X单元格的单元格范围如下所示: 我不想更改每个单元格的颜色,只想更改那些具有正确条件的单元格。 我知道这样做是可能的: 但是这种方法需要很长时间才能完成for循环,因为有数百个单元需要扫描。我宁愿只对整个范围使用一次getRange(而不是一次只使用一个单元格),然后从该范围使用getRange(它应该生成一个2d数组,对吗?)设置单元格值。我想那会快得多。

  • 我试图用超链接填充单元格到Google Sheets应用程序脚本中的范围,与我在GUI中完成时所期望的结果相同。我设法以"gid=..."的形式创建了工作表的超链接...是一个工作表ID。但是我很难得到在GUI中生成超链接时使用的rangeID,例如。 是否可以在应用程序脚本中创建指向范围的超链接?