【发布时间】:2015-04-27 03:41:01
【问题描述】:
如您所见,我是脚本新手,我需要一个脚本,我可以在其中获取表格上的数据(表 1!A1:E7 - 每小时更新一次)并复制它(作为文本)到新工作表(工作表 2)。我需要工作表 2 以每小时(24 小时)生成新的行/列,持续 7 天。我搜索了整个网络以找到这个,但无济于事。
希望能找到答案。
【问题讨论】:
标签: google-apps-script google-sheets
如您所见,我是脚本新手,我需要一个脚本,我可以在其中获取表格上的数据(表 1!A1:E7 - 每小时更新一次)并复制它(作为文本)到新工作表(工作表 2)。我需要工作表 2 以每小时(24 小时)生成新的行/列,持续 7 天。我搜索了整个网络以找到这个,但无济于事。
希望能找到答案。
【问题讨论】:
标签: google-apps-script google-sheets
惊讶于互联网没有抛出任何东西来学习如何编写脚本,但会与你分享我采取的路线。
Codeacademy. Great for learning the basic priciples of Javascript
一旦你完成了那里,下一站应该在这里。
这应该为您构建自己的脚本提供了一个很好的起点。 我也会保留此链接,以供参考,W3Schools
Has javascript references and tutorials
你很快就会上路,一旦你碰到砖墙,或者代码行为不正常。有好老的 HERE,StackOverflow 可以访问。
我不明白您在“生成新列”问题中的意思 因为如果源表始终为 A1:E7,那么您不需要在工作表 2 上添加额外的列。仅导入新数据时需要额外的行。
这是您问题的快速解决方案。
function tableCopy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("Sheet1");
var targetSheet = ss.getSheetByName("Sheet2");
var values = sourceSheet.getRange("A1:E7").getValues();
var valuesLength = values.length;
if (!valuesLength) return;
var lastRow = targetSheet.getLastRow();
var requiredRows = lastRow + valuesLength - targetSheet.getMaxRows();
if (requiredRows > 0) targetSheet.insertRowsAfter(lastRow, requiredRows);
targetSheet.getRange(lastRow + 1, 1, valuesLength, values[0].length).setValues(values);
}
要让它作为计时器工作,您必须在函数中添加一个时间驱动的触发器。在您需要的时候触发它。
希望对你有帮助
【讨论】: