2014年10月13日 星期一

檔案讀寫操作

因為受親友所託,略略研究了一下Google Apps Script。不記錄下來好像有點可惜。
假設今天在Google drive上放了一些表單,spreadsheet之類的,想對它們進行自動操作該怎麼辦呢?

第一個範例:

function CopyNewSheet() {
  var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1fYgyKkOAWKOQo79UHejnNfh-YUYdyhV8ZmgbDcGwUGY/');

  //get Sheet and add something
  var nsize =  ss.getNumSheets();
  ss.insertSheet('newsheet2', nsize);
  var ps = ss.getSheets()[0];
  var ns = ss.getSheets()[nsize];
 
  var data = ps.getDataRange();
  var data2 = ns.getDataRange();
  data.copyTo(data2);
   
}

openByUrl這一步可以得到該表單,但是這只會指向表單的第一頁。如果想要取得後面的就要呼叫getSheets()[idx]; index自然是從0開始了。

取得data則必須用getDataRange(); 會取到sheet裡全部的範圍,就像我們在excel裡選取的範圍。
注意這取到的是指標,所以我們可以把一個range貼到另一個,上述code的結果就是把ps這個sheet完完全全複製到ns,就連公式也一樣。

但如果不想複製公式,只要取值,就要改成:

  var data = ps.getDataRange().getValues();
 
  for (var i = 0; i < data.length; i++) {
    ns.appendRow(data[i]);
  }



沒有留言:

張貼留言