前提・実現したいこと
windows10のWSHを利用してSLACKのチャンネルにファイルをアップロードさせるbotスクリプトを作りたいです
なぜかGoogle SpreadSheetからxlsxファイル形式でSLACKのチャンネルに送りつけることは成功しています。
が、
単純にWSHを利用してwindowsのローカルフォルダにあるファイルを転送、という流用ができません
なんともお恥ずかしい程度の相談かと思いますが、御指南のほどをお願いします。
cscript(コマンドライン)では受け付けてもらえるがSlackには反応がないコード
function slack() {
var url = 'https://slack.com/api/files.upload';
var token = 'botのトークン'; // xoxb-で始まるボットのトークンが入ります
var channel = '#general';
// 現在日付を取得
var nowDate= (new Date())
var nextDate = Utilities.formatDate(new Date(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate() +1), 'JST', 'MMdd');
var xlsxName = "日付ありファイル " + nextDate + "送信";
var payload = { 'token' : token, 'channels' : channel, 'file' : 'z:\slack.xlsx', //コマンドラインの引数でやるのが望ましいがここは仮にzドライブのxlsxをアップしてみる 'filename' : xlsxName, 'initial_comment' : "日付ありファイル " + nextDate + "をアップしました" }; var params = { 'method' : 'post', 'payload' : payload };
}
Google SpreadSheetからはファイルアップロードが作動するコード
function SlackAttachiments(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
//スプレッドシートオブジェクトからIDを取り出す
var fileId = ss.getId();
//Excelファイルの名前は適当に
// 現在日付を取得
var nowDate= (new Date())
var nextDate = Utilities.formatDate(new Date(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate() +1), 'JST', 'MMdd');
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange(1, 7, 1, 2);
var xlsxName = "エクセル " + range.getValues() + nextDate + ".xlsx";
//エクスポート用のURLはこちら
var fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + fileId + "&exportFormat=xlsx";
//OAuth2対応が必要
var fetchOpt = {
"headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
"muteHttpExceptions" : true
};
//URLをダウンロード
var xlsxFile = UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName)
var yourSelections = Browser.msgBox("エクセル " + range.getValues() + nextDate + " を\nSlack #general に送信しますか?",
Browser.Buttons.OK_CANCEL);
if (yourSelections == 'ok'){
slack(xlsxFile);
Browser.msgBox("送信しました。Slackで返信を確認してください");
}
}
function slack(xlsxFile) {
var url = 'https://slack.com/api/files.upload';
var token = 'botのトークン'; // xoxb-で始まるボットのトークンが入ります
var channel = '#general';
//Excelファイルの名前は適当に
// 現在日付を取得
var nowDate= (new Date())
var nextDate = Utilities.formatDate(new Date(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate() +1), 'JST', 'MMdd');
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange(1, 7, 1, 2);
var xlsxName = "エクセル " + range.getValues() + nextDate + ".xlsx";
var payload = { 'token' : token, 'channels' : channel, 'file' : xlsxFile, 'filename' : xlsxName, 'initial_comment' : "エクセル " + range.getValues() + nextDate + "をアップしました" }; var params = { 'method' : 'post', 'payload' : payload }; var response = UrlFetchApp.fetch(url, params);
}
あなたの回答
tips
プレビュー