スプレッドシートに貼り付ける内容をSlackに通知してユーザに貼り付けてもらう運用をしたかった。
しかし、API経由でSlackに通知するとタブがスペースに変換されてしまう。参考
ユーザそれぞれにJavaScriptを入れてもらうのは現実的ではなかったので、
通知はカンマ区切りにし、貼り付けた後にGAS実行してもらうこととした。
// シートが開かれたときにメニューに追加
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('GAS実行') // メニュー項目名
.addItem('選択範囲のカンマを右に展開', 'commaExpand') // 項目の追加
.addToUi();
}
// 選択列の内容をカンマ区切りで右列に展開する
function commaExpand(){
let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let activeRange = sheet.getActiveRange();
let paste = activeRange.getValues().map((val) =>{
target = val
if(Array.isArray(val)){
target = val[0].toString()
}
return target.split(',')
})
let pasteRange = sheet.getRange(activeRange.getRow(), activeRange.getColumn(), paste.length, paste[0].length)
pasteRange.setValues(paste)
}