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();
留言