簡體   English   中英

在Google Apps腳本中,是否有一種方法可以基於表單數據創建新標簽,然后將數據從多個工作表復制到該新創建的標簽中?

[英]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觸發器。

電子表格的onFormSubmit觸發器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM