虎(牛)龍未酉2.1

記録帳|+n年後のジブンが思い出せますように……

複数フォルダの作成(Google Apps Script、CotEditor + python)

Google Apps Scriptで複数フォルダを自動的に作成する

 

//
// 自動でフォルダを作成したい  21-May-2017
// 多少の粗はあるけれども、取り敢えず動く
//

// 自動化アーミーナイフ指定
var URL_BOOK = 'https://docs.google.com/spreadsheets/d/xxxx';

//// データシート名取得
var SH_ACTIVE = SpreadsheetApp.getActiveSheet();
var SH_SOURCE = Spreadsheet.getRange(1,2).getValue();


function regFolder() {

// spreadsheet読込->json取得
var sheet = getSheet(URL_BOOK, SH_SOURCE);
var json = convertSheet2Json(sheet);

// フォルダ作成
for(var i=0; i<json.length; i++) {
var line = json[i];
var lflag = line.flag
var folid = line.f_id;
var title = line.f_title;

// Browser.msgBox(lflag + ', ' + folid + ', ' + title) //デバグ用

// flag判定してからフォルダ作成、'y'が入っている時のみフォルダを作る
if(lflag == 'y'){
// Browser.msgBox(lflag + ', ' + folid + ', ' + title) //デバグ用
DriveApp.getFolderById(folid).createFolder(title);
}
}

}

 

function getSheet(bookUrl, sheetName) {
var book = SpreadsheetApp.openByUrl(bookUrl);
return book.getSheetByName(sheetName);
}


// https://gist.github.com/daichan4649/8877801#file-convertsheet2json-gs
function convertSheet2Json(sheet) {
// first line(title)
var colStartIndex = 1;
var rowNum = 1;
var firstRange = sheet.getRange(1, 1, 1, sheet.getLastColumn());
var firstRowValues = firstRange.getValues();
var titleColumns = firstRowValues[0];

// after the second line(data)
var lastRow = sheet.getLastRow();
var rowValues = ;
for(var rowIndex=2; rowIndex<=lastRow; rowIndex++) {
var colStartIndex = 1;
var rowNum = 1;
var range = sheet.getRange(rowIndex, colStartIndex, rowNum, sheet.getLastColumn());
var values = range.getValues();
rowValues.push(values[0]);
}

// create json
var jsonArray = ;
for(var i=0; i<rowValues.length; i++) {
var line = rowValues[i];
var json = new Object();
for(var j=0; j<titleColumns.length; j++) {
json[titleColumns[j]] = line[j];
}
jsonArray.push(json);
}
return jsonArray;

  • フラグカラムに'y'が入っている行だけ登録する。'y'以外は全部無視するので、「済み」とか「今度」とか書いておける
  • getSheet()とconvertSheet2Json()は前から使っているやつ流用

 

CotEditor + python でフォルダを作る

1)スクリプトをエディタ指定のフォルダに置く「com.coteditor.CotEditor」

2)スクリプトに実行権限を付与「chmod 755 xxx.py」

3)入力ソースデータの形式を決め、データを入れた

4)CotEditorからスクリプトを実行

 

スクリプト:

#!/usr/bin/env python
# *-# -*- coding: utf-8 -*-
# %%%{CotEditorXInput=AllText}%%%
# %%%{CotEditorXOutput=AppendToAllText}%%%

import sys
import os

for line in sys.stdin:
# シャープで始まる行はスキップ
if line.startswith('#'):
continue

# /Usersで始まる行は、親フォルダを指定していると見做す
elif line.startswith('/Users'):
path = line.rstrip('\n')

# 20で始まる行は、作成フォルダを指定していると見做し、フォルダ作成
elif line.startswith('20'):
folder = line.rstrip('\n')
os.mkdir(path+folder)

print("done") 

 

登録フォルダデータ(.txt)

############################################################
# このテキストファイルからフォルダを自動的に作成する(21-May-2017)
# /Users から始まる行は、フォルダを作成する場所を指定 (A)
# *** /で終わること! ***
# '20'から始まる行は、作成するフォルダ名 (B)
# AフォルダにBフォルダを作成する
# 空行は無視する
# '#'から始まる行はコメント行としてスキップする
############################################################

/Users/user/Download/

【済み】2017.0615.AAA
【済み】2017.0721.BBB
// 2017.1020.CCC
// 2017.1117.DDD
2017.1219.EEE

上記の例だと、/Users/user/Download/に、2017.1219.EEEフォルダを作る(その他の行は無視)