将谷歌应用程序脚本连接到保管箱

我想能够将文件从驱动器发送到保管箱,但我有一些问题。 我收到一条消息以进入授权网址:

请访问以下URL,然后重新运行脚本:https://www.dropbox.com/1/oauth/authorize?oauth_token=xxxxxxx

我这样做,应用程序被添加到Dropbox(或者至少我收到一条消息说),但是如果我重新运行脚本,我会再次收到相同的消息。 如果我查看连接到Dropbox的应用程序列表,则不会显示这个列表...我尝试遵循以下步骤:尽可能从OAuthConfig迁移到OAuth1库...我做错了什么?

function Gmail2Dropbox() {
  var service = getDropboxService();

  if (service.hasAccess()){

    var folderName = "foldername";    
    var folder = DriveApp.getFoldersByName(folderName).next();
    var files = folder.getFiles();

    while (files.hasNext()){
      var file = files.next();
      var fileName = file.getName();
      Logger.log(fileName);

      var options = {
        "oAuthServiceName" : "dropbox",
        "oAuthUseToken" : "always",
        "method" : "put",
        "payload" : file.getBlob().getBytes(),
        "contentType" : file.getMimeType()       
      };

      var response = UrlFetchApp.fetch("https://api-content.dropbox.com/1/files_put/sandbox/" + folderName + "/" + fileName, options);

      Logger.log(response);
    }
}

  else {
    var authorizationUrl = service.authorize();
    Logger.log('Please visit the following URL and then re-run the script: ' + authorizationUrl);
  }
}

function getDropboxService() {

  var dropboxKey = "dropKey";
  var dropboxSecret = "dropSecret";

  var service = OAuth1.createService('dropbox');
  service.setRequestTokenUrl("https://api.dropbox.com/1/oauth/request_token");
  service.setAuthorizationUrl("https://www.dropbox.com/1/oauth/authorize");
  service.setAccessTokenUrl("https://api.dropbox.com/1/oauth/access_token");
  service.setConsumerKey(dropboxKey);
  service.setConsumerSecret(dropboxSecret);
  service.setCallbackFunction('authCallback');
  service.setPropertyStore(PropertiesService.getScriptProperties());
  return service;
}

function authCallback(request) {
  var service = getDropboxService;
  var isAuthorized = service.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('Success! You can close this page.');
  } else {
    return HtmlService.createHtmlOutput('Denied. You can close this page');
  }
}

查看IFTTT他们有一个叫做Maker Channel的渠道。 IFTTT将数百个服务连接在一起,使服务之间的连接变得轻松。 有了这个,你不需要OAuth,而且使用起来更容易。 他们没有Drive to Dropbox的直接支持,所以你必须使用他们的Maker Channel,这是一个API。 一旦将小应用程序Maker Channel设置为Dropbox,您可以通过POST API调用将文件上传到Maker Channel。 它使用起来非常简单,我为它制作了一个功能。

function sendToMaker(makerKey,eventName,value1,value2,value3){
  var url = 'https://maker.ifttt.com/trigger/' + eventName + '/with/key/' + makerKey;

  var payload = {
    'value1' : value1,
    'value2' : value2,
    'value3' : value3
  };

  var options = {
    'method' : 'POST',
    'payload':payload,
  };

  return UrlFetchApp.fetch(url,options);
};

当您在Dropbox方面设置IFTTT上的applet时,您需要映射文件URL,名称和目标。 我将File URL映射到“Value1”,名称为“Value2”,目标为“Value3”。 请记住正确地格式化目标,只需看看示例IFTTT。

一旦applet设置好了,你就可以将你的文件从Drive发送到Dropbox。

链接地址: http://www.djcxy.com/p/69083.html

上一篇: Connect a google app script to dropbox

下一篇: Is there a way to instantly upload files at dropbox?