Apps Script的小程式片斷


返回純文字

  return ContentService.createTextOutput('純文字');

返回純HTML

  return HtmlService.createHtmlOutputFromFile("html-name");

返回沒有帶參數得template

  return HtmlService.createTemplateFromFile("template-name").evaluate();

在template-name.html裏面可以穿插呼叫的程式碼,以<?起頭, ?>結尾;如果要輸出值則是<?=起頭, ?>結尾。通常template只有call函數的會使用這個,不然都會寫成下面的作法。

返回有帶參數得template

  var template = HtmlService.createTemplateFromFile("template-name");
  template.you_defined_var = 'value1';
  template.you_defined_var2 = 'value2';
  return template.evaluate();

這樣在template-name.html內就可以用you_defined_var和you_defined_var2這兩個變數。

返回JSON

  var your_json = { 'key1' : 'value1' };
  return ContentService.createTextOutput(JSON.stringify(your_json))
                     .setMimeType(ContentService.MimeType.JSON);
這個最常做的就是下面取得sheet的資料

返回整個sheet的資料JSON格式

  var sheet = SpreadsheetApp.openById(SpreadsheetID).getSheetByName(SheetName);
  var data = sheet.getDataRange().getValues();
  return ContentService.createTextOutput(JSON.stringify(data))
                     .setMimeType(ContentService.MimeType.JSON);

取得當前Spreadsheet

  var sheet = SpreadsheetApp.getActiveSheet();
這如果你的AppScript是綁定在sheet上面才有用,不然都要用openById開啟Spreadsheet

取得當前SpreadsheetID

  SpreadsheetApp.getActiveSpreadsheet().getId()
這個也是AppScript要綁定在sheet上面才有用

插入新的一行ROW資料

  var sheet = SpreadsheetApp.openById(SpreadsheetID).getSheetByName(SheetName);
  sheet.appendRow([val1, val2, val3, val4]);

過濾需要的資料

   var sheet = SpreadsheetApp.openById(SpreadsheetID).getSheetByName(SheetName);
   var data = sheet.getDataRange().getValues();
   var data_we_cared = data.filter(function(item){
    return beg<=item[0] && item[0]<=end;
  });

抓取sheet第2行後的資料

  var data = sheet.getRange(2,1,sheet.getLastRow()-1,sheet.getLastColumn()).getValues();

設定資料到sheet

  var data = [ [1,2,3], [4,5,6] ];
  var range = sheet.getRange(1,1,2,3);
  range.setValues(data);

取得Client的User Agent

這個在doGet和doPost裏面用
  console.log('agent:', HtmlService.getUserAgent());

取得Client的參數

  function doPost(req) {
    var name = (req && req.parameter['name']);
  }

  function doGet(req) {
    var name = (req && req.parameter['name']);
  }

在Sheet介面顯示紅色的錯誤提示字串

簡單的方法可用throw "錯誤訊息",也可以直接丟出物件 throw {物件}

在Sheet介面顯示訊息框MessageDialog

  SpreadsheetApp.getUi().prompt("顯示訊息");

在Sheet介面顯示輸入框InputDialog

  var ui = SpreadsheetApp.getUi();
  var result = ui.prompt('請輸入:', ui.ButtonSet.OK_CANCEL);
  var btn = result.getSelectedButton();
  if (btn != ui.Button.OK) {
    return;
  }
  var input_data = result.getResponseText();

留言