Google apps script 基于模板将值从电子表格复制到另一个电子表格
使用此脚本()我可以基于模板选项卡(在本例中为选项卡“xxx”)生成新的电子表格(因此不是选项卡),仅当我选择特定行并将此电子表格重命名为对应行B列单元格中的值时。Google apps script 基于模板将值从电子表格复制到另一个电子表格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,使用此脚本()我可以基于模板选项卡(在本例中为选项卡“xxx”)生成新的电子表格(因此不是选项卡),仅当我选择特定行并将此电子表格重命名为对应行B列单元格中的值时。 现在,我将把源电子表格中单元格A2的值复制到单元格A3中的选项卡“xxx”中 怎么做 function onOpen() { SpreadsheetApp.getUi().createMenu('Genera Scheda') .addItem('Genera Scheda', 'createSpreadsheet')
现在,我将把源电子表格中单元格A2的值复制到单元格A3中的选项卡“xxx”中
怎么做
function onOpen() {
SpreadsheetApp.getUi().createMenu('Genera Scheda')
.addItem('Genera Scheda', 'createSpreadsheet')
.addToUi()}
function createSpreadsheet() {
var ss = SpreadsheetApp.getActive();
// the following line means that the function will search for the spreadsheet name in the active sheet, no matter which one it is
var sheet = ss.getActiveSheet();
//the selected row
var row = sheet.getActiveCell().getRow();
// column 2 corresponds to "B"
var name = sheet.getRange(row, 2).getValue();
var templateSheet1 = ss.getSheetByName('xxx');
var templateSheet2 = ss.getSheetByName('xxx2');
var newSpreadsheet = SpreadsheetApp.create(name);
var fileId = newSpreadsheet.getId();
var file = DriveApp.getFileById(fileId);
var folderId ="-----";
var folder = DriveApp.getFolderById(folderId);
templateSheet1.copyTo(newSpreadsheet).setName("Scheda");
templateSheet2.copyTo(newSpreadsheet).setName("Import")
newSpreadsheet.deleteSheet(newSpreadsheet.getSheetByName("Foglio1"));
folder.addFile(file);
DriveApp.getRootFolder().removeFile(file);
}
要在选项卡和电子表格之间复制单个单元格值,一个好的解决方案是使用和
此方法必须应用于范围对象(即单元格)
样本:
。。。
//将工作表定义为活动工作表或使用sheet=ss.getSheetByName(“XXX”)指定它;
var myValue=sheet.getRange(“A2”).getValue();
newSpreadsheet.getSheetByName(“xxx”).getRange(“A3”).setValue(myValue);
...
请注意,如果要同时获取/设置多个单元格的值,则需要使用getValues()
和setValues()
更新
基于您的情况的完整代码:
function onOpen() {
SpreadsheetApp.getUi().createMenu('Genera Scheda')
.addItem('Genera Scheda', 'createSpreadsheet')
.addToUi()}
function createSpreadsheet() {
var ss = SpreadsheetApp.getActive();
// the following line means that the function will search for the spreadsheet name in the active sheet, no matter which one it is
var sheet = ss.getActiveSheet();
//the selected row
var row = sheet.getActiveCell().getRow();
// column 2 corresponds to "B"
var name = sheet.getRange(row, 2).getValue();
var templateSheet1 = ss.getSheetByName('xxx');
var templateSheet2 = ss.getSheetByName('xxx2');
var newSpreadsheet = SpreadsheetApp.create(name);
var fileId = newSpreadsheet.getId();
var file = DriveApp.getFileById(fileId);
var folderId ="-----";
var folder = DriveApp.getFolderById(folderId);
templateSheet1.copyTo(newSpreadsheet).setName("Scheda");
templateSheet2.copyTo(newSpreadsheet).setName("Import")
var myValue = sheet.getRange("A2").getValue();
newSpreadsheet.getSheetByName("Scheda").getRange("A3").setValue(myValue);
newSpreadsheet.deleteSheet(newSpreadsheet.getSheetByName("Foglio1"));
folder.addFile(file);
DriveApp.getRootFolder().removeFile(file);
}
谢谢你的回复。这是我的代码:但我有一个错误:TypeError:无法读取Null的“getRange”属性听起来好像你的新电子表格中没有一张名为“xxx”的表格。是否要将值设置为旧电子表格或新电子表格的
A3
?在这种情况下,您需要在将表格“xxx”从旧电子表格复制到新电子表格后添加我的答案的两行-在此之前,此表格不存在。我只是这样做了,请注意,在您的行templateSheet1.copyTo(newSpreadsheet).setName(“Scheda”)
您将xxx
重命名为Scheda
,因此需要调整newSpreadsheet.getSheetByName(“xxx”).getRange(“A3”).setValue(myValue)代码>相应地将xxx
更改为Scheda
。我希望现在更清楚了!代码是有效的。现在,我如何将A列中所选行的对应单元格从旧表复制到新表?