2017-10-27 5 views
3

GoogleドライブからYouTubeにファイルのリストをインポートしようとしています。メタデータおよびファイルへのURLは、Googleスプレッドシートにあるので、私は、次のGoogle Apps ScriptのYouTube Data API経由でドライブからアップロードできません:空の応答

  1. をしてGoogle Appsのスクリプトを使用していくつかのコードを書いて、選択した行
  2. は、タイトル、説明、GoogleドライブURLを取得する取得
  3. が応答からYouTube.Videos.insert
  4. Update経由のYouTube動画IDと選択された行をタイトルと説明を使用してYouTubeにブロブをアップロードDriveApp.getFileById
  5. を経由してGoogleドライブからファイルをロードし

アップロードは、この

var blob = DriveApp.getFileById(id).getBlob(); 
var resource = { 
    snippet: { 
     title: 'The title', 
     description: 'A long description ...', 
     defaultLanguage: 'de', 
     categoryId: 17, 
     tags: [ 'Sport', 'Fitness' ], 
    }, 
    status: { 
     privacyStatus: 'unlisted' 
    } 
} 
try { 
    var result = YouTube.Videos.insert(resource, "snippet,status", blob); 
    return result.id; 
} catch (err) { 
    console.log({message: 'Error ' + err.message, error: err}); 
} 

このコードは既に約一年前に働いているようなものになります。私はそれを少し修正しましたが、今はYouTube.Videos.insert呼び出しから応答がありません。キャッチ内に次のものが記録されています:

message: Error Empty response

error: Exception: Empty response

あまり役に立ちません。

アップロードする前に、利用可能な複数のチャンネルがある場合に、YouTube.Channels.list を送信してターゲットチャンネルを取得します。このリクエストでは、自分のデータへのアクセスを許可する必要があり、最初の呼び出しでのみ尋ねられます。私はまたapplications for my Google accountのリストのスクリプトを参照してください。私は許可がOKであると仮定します。

私はこの問題に関する詳細情報を得る方法や、何か別のやり方が必要なのですか?対象チャネルについて


(これは別の質問であるかもしれない)私が唯一の特定のチャンネルにアップロードすることができるようだと、私は本当に私がYouTubeのコンテンツパートナーだ場合(パラメータonBehalfOfContentOwnerを参照してください、これを使用することはできませんそしてonBehalfOfContentOwnerChannel):

Note: This parameter is intended exclusively for YouTube content partners.

+0

Appsスクリプトの問題追跡ツールで、[#68799876 BlobをドライブからYouTubeにアップロードできません](https://issuetracker.google.com/68799876) – Kariem

答えて

3

私は私のプロジェクトで同じ問題を抱えていたし、ここで私は考え出したものです:あなたのビデオファイルのサイズを超える10 Mbのであれば、あなたはEmpty responseエラーが発生します。おそらく

(何のドキュメントは、それに言及していないので、正式に言うことはできません)これが起こっているのGoogle AppsスクリプトのYouTube.Videos.insert(および組み込みのサービスを他のすべての利用可能)は、呼び出しごとに10 MBの制限を持っているボンネットの下UrlFetchAppを、使用しているので: https://developers.google.com/apps-script/guides/services/quotas#current_limitations。サンプルコードを使用して自分で確認することができます。ファイルが10 Mb未満の場合、正常にアップロードされます。基本的に、あなたは上の制限はありませんこれは、SpreadsheetApp.getUi().showModalDialogを使用してモーダルウィンドウを開き、モーダルダイアログ内の無地のJavaScript経由でYouTubeにアップロードを実行する必要がありますhttps://stackoverflow.com/a/44853845/555121

:可能な回避策として

、あなたがこの回答からアイデアを使用することができます転送されたデータサイズ。https://github.com/sangnvus/2015SUMJS01/blob/master/WIP/Sources/FlyAwayPlus/FlyAwayPlus/Scripts/youtube-upload.js

+0

の問題を提起しました。素晴らしい答え!あなたが提供したソリューションをテストしなかったが、これが理由だと思う。 Apps Scriptの中で実行する理由は、クライアント側でネットワーク化することを避けたいからです。そのため、すべてをスクリプトに入れてクライアントの外部で実行します。 – Kariem

関連する問題