質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

Q&A

0回答

2492閲覧

windows10のWSHを利用して SLACKのチャンネルにファイルをアップロードさせるbotスクリプト

gPHmRKPsrYNE2gn

総合スコア6

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

0グッド

0クリップ

投稿2018/06/09 08:06

前提・実現したいこと

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);

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問