簡體   English   中英

Google Apps腳本-復制到現有電子表格

[英]Google Apps Script - copy to existing spreadsheet

我正在嘗試使用Google Apps腳本copy()將主電子表格“發布”到輸出電子表格,但是每次都獲得多個副本,而不是用它代替輸出文件。 任何人都可以建議一種替換目標電子表格內容的方法,以便我可以為輸出保留相同的文件ID並手動觸發“發布”。 嘗試過copyTo ,但是只能制作多張紙。

主電子表格是一個工作人員名冊,需要多個管理人員才能處理,而沒有工作人員看到實時版本。 經理完成更新后,可以將其推送給員工。

編輯:得到它的工作

function publishRoster() {
  var source = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = source.getActiveSheet();
  var updatedDateTime = sheet.getRange("A1");
  var now =  Utilities.formatDate(new Date(), "GMT+10:30", "dd/MM/yyyy H:mm")
 updatedDateTime.setValue("Last Published " + now);
  var sourceName = source.getSheetName();
//  var sValues = source.getDataRange().getValues();
  var destination = SpreadsheetApp.openById('my-destination-sheet-id-here');
  var destinationSheet = destination.getSheetByName(sourceName);
  if (destinationSheet == null ) { }
 else { destination.deleteSheet(destinationSheet); }
  sheet.copyTo(destination).setName(sourceName);
}

copyTo()在目標電子表格中創建現有工作表的副本。 如果要發布從特定工作表到指定目標工作表的更改,則可以將數據從源工作表復制到目標工作表,而不是復制整個工作表。[當然,每次復制都會創建新工作表]

因此,將數據從主表復制/發布到從表的代碼如下:

var SOURCEID = 'xxxxxxxxxxxxx'; //put your source spreadsheet id here
    var SOURCESHEETNAME = 'XXXXX'; //put your source sheet name here
    var DESTINATIONID = 'xxxxxxxxxxxxx'; //put your destination spreadsheet id here
    var DESTINATIONSHEETNAME = 'XXXXX'; //put your destination sheet name here

    var data = SpreadsheetApp.openById(SOURCEID).getSheetByName(SOURCESHEETNAME).getDataRange().getValues();
    SpreadsheetApp.openById(DESTINATIONID).getSheetByName(DESTINATIONSHEETNAME).clear(); //This line is to clear the existing data in destination.
    SpreadsheetApp.openById(DESTINATIONID).getSheetByName(DESTINATIONSHEETNAME).getRange(1, 1, data.length; data[0].length).setValues(data);
    //data.length = no. of rows in source
    //data[0].length = no. of columns in source
    var now =  Utilities.formatDate(new Date(), "GMT+10:30", "dd/MM/yyyy H:mm");      
SpreadsheetApp.openById(DESTINATIONID).getSheetByName(DESTINATIONSHEETNAME).getRange("A1").setValue("Last Published " + now);

這不是經過測試的代碼,請讓我知道是否出現任何問題,我們將竭誠為您服務。 謝謝

暫無
暫無

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

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