GoogleスプレッドシートからINSERT文を生成するGoogle Apps Scriptのメモ。
以下のように表を選択した状態で
![スクリーンショット 2016-06-21 21.20.51.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F32602%2F2b39f4bb-cb8f-c6d4-df93-03a7118c605e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=595334e04b4d45a76cf30bb03a3a0ac4)
実行すると、こんな感じにINSERT文を別シートに生成するGoogle Apps Scriptです。
![スクリーンショット 2016-06-21 21.21.13.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F32602%2F8da83b9f-7936-9d6c-c524-59ecdffa71a6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=bdef757400239ae72d0aa463e7f7613f)
コードは以下の通り。
function create_insert() {
var headerRowIndex = 1;
var firstValuesRowIndex = headerRowIndex + 1;
var range = SpreadsheetApp.getActiveRange();
var cells = range.getValues();
var numRows = range.getNumRows();
var numColumns = range.getNumColumns();
var tableName = cells[0][0];
var columnNames = [];
for (var i = 0; i < numColumns; i++) {
columnNames.push(cells[headerRowIndex][i]);
}
var prefix = "INSERT INTO " + tableName + " (" + columnNames.join(",") + ") VALUES (";
var newSheet = range.getSheet().getParent().insertSheet();
var targetCell = newSheet.getActiveCell();
for (var i = firstValuesRowIndex; i < numRows; i++) {
var values = [];
for (var j = 0; j < numColumns; j++) {
values.push(cells[i][j]);
}
targetCell.setValue(prefix + values.join(",") + "); ");
targetCell = targetCell.offset(1, 0);
}
}