![](/img/trans.png)
[英]Creating a new Google Sheet based off a template and exporting data from Master Sheet to newly created sheets
[英]In Google Apps Scripts, is there a way to create new tabs based on form data, then copy data into that newly created tab from multiple sheets?
我正在設置一個連接到表單的Google表格。 該表格正在從唯一用戶那里引入數據。 當新用戶完成表單並將數據存儲在“表單響應1”選項卡中時,我希望創建一個新標簽,該標簽以新用戶的名字命名。 此外,我想從其他兩個單獨的標簽中復制一些數據到這個新創建的標簽中...表格響應1標簽中的一行,以及另一個標簽中的大量數據和公式(現在我有那個標簽命名為“表格5”)。
我能夠創建一個新選項卡,並根據“表單響應1”選項卡中顯示的唯一用戶對其進行命名。 但是,我不知道如何將其他標簽中的數據復制到新創建的標簽中,因為我試圖使用getSheetbyName,這需要我提供一個命名工作表。 嗯,我沒有命名工作表,因為要復制到的目標工作表將始終基於表單中的新數據。
任何幫助表示贊賞。 謝謝。
function onFormSubmit(){
Logger.log('submit ran');
var form = FormApp.openById('1oaGxmsd8SEDJ9HrXixpriCeKYrRxr1ZVX0x1zbohTIQ');
ScriptApp.newTrigger('onFormSubmit')
.forForm(form)
.onFormSubmit()
.create();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Form Responses 1');
//Get last row of data
var lastRow = sheet.getLastRow();
var colB_Data = sheet.getRange(lastRow, 2).getValue();
//var thisUser = 'theUserName';
ss.insertSheet(colB_Data);
};
function copyTo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("Sheet5");
var pasteSheet = ss.getSheetByName("John Doe");
var source = copySheet.getRange(1,1,4,2);
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,1,4,2);
source.copyTo(destination);
onFormSubmit函數有效,但其余代碼無效。 我無法將數據復制到尚不存在的工作表中。 似乎我需要將“ John Doe”作為變量復制到創建的每個新表中
嘗試這個:
function onFormSubmit(e){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet5');
var rg=sh.getRange(1,1,4,2);
var vA=rg.getValues();
var username=e.values[1];
var nsh=ss.insertSheet(username);
nsh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
}
該代碼是使用電子表格腳本編輯器編寫的。 而且,您必須在同一項目中為電子表格創建一個onformSubmit觸發器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.