asana javascript bookmarklet创建新任务

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

我正在尝试整理一个书签,该书签可以获取当前页面的URL,标题以及任何选定的文本,然后通过API将此作为新任务发布到Asana。

我已经创建了一个特定的项目,用于进入,捕获project id并确定了workspace id。在命令行上使用curl测试这些值可以正常工作:

curl --user MYAPIKEY: https://app.asana.com/api/1.0/workspaces/MYWORKSPACEID/tasks --data-urlencode 'name=Hello World' --data-urlencode 'notes=How are you' --data-urlencode 'projects[0]=MYPROJECTID'

借用其他示例javascript bookmarklet我将以下代码放在一起:

javascript:
apikeyhash='MYBASE64ENCODEDAPIKEYPLUSCOLON';
workspaceid='MYWORKSPACEID';
projectid='MYPROJECTID';
title=document.title;
loc=location.href;
if(document.getSelection) { 
  text=location+'\r\r'+document.getSelection(); }
else {
  text=location;
}
xml = new XMLHttpRequest();
xml.open('POST', 'https://app.asana.com/api/1.0/workspaces/'+workspaceid+'/tasks', false);
xml.setRequestHeader("Authorization", 'Basic '+apikeyhash);
xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xml.send('name='+encodeURIComponent(title)+'&notes='+encodeURIComponent(text)+'&projects%5B0%5D='+projectid);
alert(xml.responseText);

MYBASE64ENCODEDAPIKEYPLUSCOLON的输出来自:echo -n'MYAPIKEY:'| openssl enc -base64)

使用它作为书签(通过Safari中的书签栏访问)只会导致当前页面出现刷新,并且没有添加任何内容Asana。我很感激修复javascript的任何帮助。

注意:我理想的解决方案是弹出快速添加任务对话框Asana并预先填充该表单(使用当前登录的Asana用户的凭据),但我不确定这是否可行。现在,只需能够快速发送URL,标题以及任何选定的文本Asana作为新任务将非常有用。只有少数用户可以使用每个用户的API密钥创建自定义bookmarklet。

提问于
用户回答回答于

我怀疑,如果你在浏览器中查看javascript控制台,你会发现它拒绝了跨站点请求。Asana API目前不支持CORS(虽然我们计划将来使用),因此通常的规则适用:您只能向同一主机发送请求:端口作为当前网站。

用户回答回答于

相关和其他人,您可能知道,但也有一个非常好的Chrome扩展(但您必须将URL粘贴到任务中)。当然,使用Asana API自己构建东西也很酷!:)

此外,我构建了一个小的Asana Macbook Touch Bar按钮,以便快速创建任务,但这当然只有当你在Mac上并且它不会自动输入URL时,它更适用于任何类型的任务当你在此时此刻:

视频:https//www.youtube.com/watch?v = K4tDfE_i1BQ

说明:https//github.com/danieliversen/asana-touchbar-helper

扫码关注云+社区

领取腾讯云代金券