所以代码复制了Sheet1 B2:G2的内容,B2单元格包含一个通常以多个0开头的代码。在 Sheet1 中一切正常,但是一旦脚本执行并复制到 Sheet2,格式将更改为"自动","000001"变为"1"。我似乎找不到一个可以将其即时格式设置为纯文本以将 0 保持在前面的方法。此外,G 单元格包含 €,所以我不想将整行设置为纯文本,而只是将 B 列设置为纯文本。
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange("Sheet1!B2:G2");
var destSheet = ss.getSheetByName("Sheet2");
destSheet.appendRow(source.getValues()[0]);
}
这个修改怎么样?我认为有几种解决方案可以解决您的情况。因此,请将其视为其中之一。在此修改中,脚本中添加了 2 行。
修改点:
- 运行
appendRow()
后,"Sheet1!B2:G2"被复制到追加的行中。这样,将显示"000001"。
修改后的脚本:
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange("Sheet1!B2:G2");
var destSheet = ss.getSheetByName("Sheet2");
destSheet.appendRow(source.getValues()[0]);
var destination = destSheet.getRange(destSheet.getLastRow(), 1); // Added
source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMAT) // Added
}
引用:
- 复制到()
- 枚举复制粘贴类型
如果这不是你想要的结果,请告诉我。我想修改它。
谢谢你的这个线程。我有一个稍微不同的问题需要解决,但这给了我做这件事的灵感,并想我会分享。我想更新列 D:I使用 D7:I7 中的现有公式,随时对电子表格进行编辑。(就我而言,这通常只是将数据添加到新行 A:C。我只希望在修改一个特定的工作表(而不是其他工作表)时触发它。
这似乎做得很好。
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sName = ss.getSheetName();
Logger.log('Starting script...');
if (sName == 'Data'){
Logger.log('We are editing the sheet name: "' + sName +'"'
);
var source = ss.getRange("Data!D7:I7");
var destSheet = ss.getSheetByName("Data");
var lastRow = destSheet.getLastRow();
var destination = destSheet.getRange("D"+lastRow);
destination.activate();
source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMULA)
} else
Logger.log('Nothing Done. Sheet name: "' + sName + '"' );
}