const today = new Date(); const year = today.getFullYear(); // 2023 const month = today.getMonth()+1; // 2 const date = today.getDate(); // 1 const day = today.getDay(); // 3 (水曜日)
function main(){ sheet = SpreadsheetApp.getActive(); let file_name = getFileName(sheet, '.sh') createTextFile(out_sheet, file_name) } function createTextFile(sheet, file_name, newline_code = '\n') { const text = getText(sheet); var blob = Utilities.newBlob(text, 'text/plain', file_name); var folder = getParentFolder(); folder.createFile(blob); } function getText(sheet, newline_code = '\n') { const values = sheet.getDataRange().getValues(); var data = []; for(let i = 0; i < values.length; i++) { let line = values[i].join(' ').trim() data.push(line); } return data.join(newline_code); } function getFileName(sheet, ext = '.txt', timeformat= 'yyyyMMdd_HHmm', timezone = 'Asia/Tokyo') { var sheetName = sheet.getName() var datetime = Utilities.formatDate(new Date(), timezone, timeformat); return sheetName + '_' + datetime + ext; } function getParentFolder() { let thisFileId = SpreadsheetApp.getActive().getId(); let thisFile = DriveApp.getFileById(thisFileId); let parentFolder = thisFile.getParents().next(); return parentFolder; }
記事:
記事:
共通化したいGASファイル:
GASを利用したいスプレッドシート側:
GASを更新する場合:
デフォルトではweb上エディタ上を使うが、gitや任意のエディタを使えるようにする。
npm install -g @google/clasp # shellの再起動。claspが見つからない場合があった exec $SHELL -l
clasp login
function doGet(e) { return HtmlService.createHtmlOutput(JSON.stringify(e)); } function doPost(e) { return ContentService.createTextOutput(e.postData.getDataAsString()); }
{ "parameter":{ "key1":"val1" }, "contextPath":"", "contentLength":-1, "queryString":"key1=val1", "parameters":{ "key1":[ "val1" ] }, "pathInfo":"path1/path2/" }
devとprod用の異なるURLがある。
1度発行されたURLはコードを変えても変わらない
dev用:
prod用: