Basecamp からファイルを取得する方法を長い間探していましたが、これまでのところ「ミッション インポッシブル」のように思えますが、ここでも質問したいと思います。
Basecamp プロジェクトからファイルを取得する方法はありますか?
前もって感謝します。
編集済み:アップロードされたファイルを取得する方法を意味します。そこにアップロードしたファイルを除くすべてのプロジェクト データをエクスポートできます。
次の手順を使用して、Basecamp からすべてをエクスポートできます。
wget --mirror -e robots=no
--reject logout --no-cookies 'http://your-subdomain.basecamphq.com' --header <pasted-cookie-header>
Matt McClure の答えは的を射ていましたが、いくつかのことが足を引っ張っていました。
Chrome
開発者ツールで必要な Cookie を見つけるには、Network
上部のアイコンをクリックしてからHeaders
タブをクリックします。
セクションから、ラベル'request headers'
を含むCookie セクション全体をコピーします。'Cookie:'
次のように、matt が示す場所に引用符を付けて文字列全体を貼り付け<pasted-cookie-header>
ます。
wget --mirror -e robots=no --reject logout --no-cookies 'http://your-subdomain.basecamphq.com' --header 'Cookie: session_token=c6a1ea88a0187b88025e; transition_token=BAhbB2kDA0VjSXU6CVRpbWUNqB...'
(わかりやすくするために、Cookie 文字列を短くしています)
BaseCamp APIは、ファイルを含むフルアクセスを提供することを目的としています。
RESTの知識がある場合は、すべてのデータを手動で引き出し(モジュロレート制限)、それを使って好きなことを行うことができます。
ちなみに、あるアカウントから別のアカウントにプロジェクトを移動できるツールを作成すれば、それにはかなりのお金を払うことになります。
Matt と Peter はどちらもwget --mirror
、最も簡単な解決策であると私が考える方法を使用することを既に提案しています。ただし、Google Chrome から Cookie を正しくコピーできませんでした。
代わりに、少し異なる方向に進み、Chrome の cookie.txt エクスポート拡張機能を使用して、すべての Cookie をプレーン テキストとして cookies.txt ファイルにコピーしました。
私の wget コマンドは次のようになりました。
wget --mirror -e robots=no --reject logout 'http://yourdomain.basecamphq.com' --load-cookies cookies.txt
Mac ユーザー向けの追加メモ:自作wget
で簡単にインストールできます:
brew install wget
basecampでは、プロジェクトをXML、HTMLでエクスポートできます。また、PDFで取得する方法もあります。この情報は、basecampのhelp / faqセクションにあります:http://basecamphq.com/help/general#exporting_data
PDFエクスポートの詳細:http://37signals.blogs.com/products/2008/02/export-a-baseca.html
このツールは Windows で使用します。
試用モードでは、このツールを使用して base から 3 つのプロジェクトをダウンロードできます。basecamp の資格情報を使用してログインすると、base アカウントのすべてのプロジェクトが一覧表示されます。
マシンに php がインストールされている場合は、このコードを basecampfilevac.php に保存します。
<?
// make sure the folder of the script is writeable (0777)
ini_set('memory_limit', '-1');//keeps the script from timing out
function BasecampCall($endPoint, $usePrefix = true) {
// From: http://prattski.com/2008/10/22/basecamp-api-examples-using-php-and-curl-get/
$session = curl_init();
$basecampId = '[Your Basecamp Account Id Here]'; //this should be a number like 9999999, You can find it in the URL when you log into Basecamp.
$username = '[Your Basecamp Username Here]';
$password = '[Your Basecamp Password Here]';
$emailaddress = '[Your Basecamp Email Address Here]';
$basecampUrl = 'https://basecamp.com/' . $basecampId . '/api/v1/';
curl_setopt($session, CURLOPT_URL, ($usePrefix == true ? $basecampUrl : "") . $endPoint);
curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($session, CURLOPT_HTTPGET, 1);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_USERAGENT, "MyApp (".$emailaddress.")");
curl_setopt($session,CURLOPT_USERPWD, $username . ":" . $password);
if(ereg("^(https)",$request)) curl_setopt($session,CURLOPT_SSL_VERIFYPEER,false);
$response = curl_exec($session);
curl_close($session);
if($usePrefix){
$r = json_decode($response);
} else {
$r = $response;
}
return $r;
}
$projects = BasecampCall('projects.json');
// For each project take name and id
foreach($projects as $proj) {
$pr = array(
"id" => (string)$proj->id,
"name" => (string)$proj->name
);
// Retrieve the attachments
echo "\nSaving attachments for project: " . $pr['name'] . "...\n";
@mkdir($pr['name']);
$filesArray = array();
$n = 1;
do {
$attachments = BasecampCall("projects/" . $proj->id . "/attachments.json?page=" . $n);
if(count($attachments) > 0) {
foreach($attachments as $attachment) {
$file = pathinfo($attachment->name);
@file_put_contents($pr['name'] . "/" . $file['filename'] . (in_array($file['filename'], $filesArray) ? "-" . rand() : "") . "." . $file['extension'], BasecampCall($attachment->{'url'}, false));
$filesArray[] = $file['filename'];
echo "Saving file " . $attachment->name . "...\n";
}
}
$n++;
} while(count($attachments) == 50);
}
?>
次に、次の行を正しい情報で更新します。
$basecampId = '[Your Basecamp Account Id Here]'; //this should be a number like 9999999, You can find it in the URL when you log into Basecamp.
$username = '[Your Basecamp Username Here]';
$password = '[Your Basecamp Password Here]';
$emailaddress = '[Your Basecamp Email Address Here]';
次に、このコマンドを保存して実行します。php basecampfilevac.php
Basecamp と Dropbox の統合をセットアップして、Basecamp のすべての添付ファイルを専用の Dropbox フォルダーに自動的に転送できます。
http://blog.cloudwork.com/your-automatic-basecamp-dropbox-backup-step-by-step/
統合は CloudWork によって行われます。CloudWork には無料プランがあるため、1 か月に 100 個を超える添付ファイルをバックアップしないと思われる場合は、無料で行うことができます. その上に、料金プランがあります。