首页 > 解决方案 > Insert Multi Row Script Google Sheet

问题描述


I have written a google sheet script for addding single row code below:
//input values
function SubmitData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formS = ss.getSheetByName("Entry"); // entry sheet
var dataS = ss.getSheetByName("Data"); // data sheet

var values = [[ formS.getRange("B4").getValue(),
                formS.getRange("C4").getValue(),    
                formS.getRange("D4").getValue(),
                formS.getRange("E4").getValue(),
                formS.getRange("F4").getValue(),                
                formS.getRange("G4").getValue(),
                formS.getRange("H4").getValue(),
                formS.getRange("I4").getValue(),    
                formS.getRange("J4").getValue(),
                formS.getRange("K4").getValue()]];    

dataS.getRange(dataS.getLastRow()+1,2,1,10).setValues(values);  
}   

But I want to add multi-row if B5 or C5 data exist.

The Sheet Where I Add Row Data: SHEET WHERE I ADD ROW DATA

The Result I Want in the Data Sheet: RESULT I WANT IN DATA SHEET

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-api

解决方案


这样做,您需要通过复制第一行同一列中的值来迭代行并“修补”缺失值。尝试这个:

function copyEntriesToDataSheet() {
  const ss = SpreadsheetApp.getActive();
  const [firstRow, ...furtherRows] = ss.getRange('Entry!A4:K').getValues();
  const targetSheet = ss.getSheetByName('Data');
  targetSheet.appendRow(firstRow);
  furtherRows.forEach(row => {
    if (row.join('')) {
      targetSheet.appendRow(row.map((value, index) => String(value) ? value : firstRow[index]));
    }
  });
}

学习 Google Apps 脚本的一些最佳资源包括初学者指南、 新 Apps 脚本编辑器指南Google Sheets 代码实验室的 Apps 脚本基础、 扩展 Google 表格页面、  javascript.info 和 Mozilla 开发者网络


推荐阅读