Google脚本替换已停止工作的ImportRange公式吗?

时间:2018-12-19 21:26:53

标签: google-apps-script google-sheets

我需要帮助。我的工作使用Google表单(缺勤申请表)来收集员工的休假时间。提交后,该数据将进入Google Spreadsheet,然后使用公式计算总休假时间。

负责更新所有员工休假的员工使用不同的Google电子表格进行工资核算。我使用以下公式从缺勤申请表中导入数据,直到突然停止工作为止。我的猜测是重要数据变得太大。电子表格中当前有560行和18列。 = QUERY(IMPORTRANGE(“ https://docs.google.com/spreadsheets/d/1uZL7bMIiuOEpSbC0kk3rB_nkBAGb8Pf-opwl4FGovJ0/edit#gid=971834620”,“'Form Responses 1'!B:P”),“选择Col1,Col4,Col5,Col11,Col14,其中Col2 <>''”,1)[注:我无法共享公式中列出的电子表格]

Col1是电子邮件,Col4是第一天休息,Col5是最后一天休息,Col11是总休息时间,Col14是休息时间的描述(个人,病假等)。

我试图用脚本替换它,但继续遇到错误。我对Google Apps脚本一无所知。最近三天,我在这里阅读了有关它们的内容,并尝试编写一些东西,但没有任何效果。许多脚本在一两分钟后出现超时错误,或者根本不发出错误消息并且无法正常工作。

其他公式在工资表中运行。这是包含所有要素的模拟工资表的链接: https://docs.google.com/spreadsheets/d/1y4baWrY0799dQPffXfD7oKCMISy7uai34wTRG5dtlfQ/edit?usp=sharing

我的问题是: 1.是否可以改进importrange公式以再次起作用?如果是这样,我该怎么做才能加快速度? 2.脚本可以解决我的公式问题并可以加快计算过程吗(有时需要一个小时来完成整个工作表) 3.如果脚本可以提供帮助,那会是什么?

在这一点上,我的头撞在墙上,所以很开放尝试任何事情!

这是我尝试的最后一个脚本,并且收到以下错误消息:TypeError:无法调用null的方法“ getRange”。 (第15行,文件“代码”)

function onOpen() {
  var submenu = [{name:"Copy", functionName:"Copy"}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu('Menu', submenu);  
}

function Copy() {
 var sss = SpreadsheetApp.openById('1uZL7bMIiuOEpSbC0kk3rB_nkBAGb8Pf-opwl4FGovJ0'); //replace with source ID
 var ss = sss.getSheetByName('Responses'); //replace with source Sheet tab name
 var range = ss.getRange('A1:O600'); //assign the range you want to copy
 var data = range.getValues();

 var tss = SpreadsheetApp.openById('1f53bnAllY5LYgwyPY9X8oZJ5fMBbwpiB5CRglaw_iqM'); //replace with destination ID
 var ts = tss.getSheetByName('Data3forscript'); //replace with destination Sheet tab name

 ts.getRange(ts.getLastRow()+1, 1,16,38).setValues(data); //you will need to define the size of the copied data see getRange()

0 个答案:

没有答案