我有以下脚本需要在相关日期结束时运行,我试图让它在计时器上运行,我无法解决。我有5张床单,用于安排员工的一天中的不同部分。在一天结束时,我需要将它发送到一张主表,该表符合工作时间和各种任务。我的问题是: - 1)我有一张空白的Google工作表,里面有5张纸+ 1张隐藏纸。这需要在其副本的当天发送到主副本。名称,如果可能自动。 2)它们可以提前3个月制作,并且不希望它每天发送空白备份。 3)当我按下" backup"任何新创建的工作表上的按钮我必须授权该脚本。
有没有办法不必在新电子表格上授权脚本。有没有人有更好的自动化想法?
{{1}}
答案 0 :(得分:0)
将nameofSpreadsheet
放在菜单.addItem('Name','nameOfSpreadsheet')
中对我没有意义。它没有任何成就,因为没有办法看到回报。
我尝试重写你的备份功能。我希望它有所帮助。
function dataBackup()
{
var inputSS = SpreadsheetApp.getActiveSpreadsheet();
var archiveSS = SpreadsheetApp.openById('146WU8RghfFqlCpCSX7n6kBAKOyxcpVKt14yhVfvYz-g');
var sheetNames = ['AM trip', 'PM trip', 'Pool / Beach', 'Night Dive'];
for (var i=0; i<sheetNames.length; i++)
{
var inputSheet = inputSS.getSheetByName(sheetNames[i]);
var archiveSheet = archiveSS.getSheetByName(sheetNames[i]);
var date=new Date(inputSheet.getRange('A2').getValue());
var rng=inputSheet.getRange('E7:U37');
var dataA=rng.getValues();
var data=[];
for(var j=0;i<dataA.length;j++)
{
if(dataA[j][0] && dataA[j][1])
{
data.push([dataA[j].splice(0,0,date)]);
}
}
var dv=archiveSheet.getRange(archiveSheet.getLastRow(), 1).getValue();
date=(typeof(dv)!='undefined')?dv:'No Date Found';
if (data.length>0)
{
archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), data.length);
archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, data.length, rng.getWidth()+1).setValues(data);
}
else
{
archiveSheet.insertRowsAfter(archiveSheet.getLastRow(), 1);
archiveSheet.getRange(archiveSheet.getLastRow() + 1, 1, 1, 2).setValues([[date, 'No Data']]);
}
}
}